Developers
Cornwall Political Watch provides a free, public API for accessing Cornwall Council data. Use it to build tools, conduct research, or power your own accountability projects.
API base URL
https://cornwallpoliticalwatch.com/api/publicAll endpoints return JSON. No authentication is required. Responses include CORS headers so you can call the API directly from client-side JavaScript.
Endpoints
/api/public/councillorsReturns all 87 Cornwall councillors with their party, ward, contact details, attendance statistics, and any active red flags.
Example response
{
"councillors": [
{
"slug": "john-doe",
"fullName": "John Doe",
"party": "Conservative",
"ward": "Truro East",
"email": "john.doe@cornwall.gov.uk",
"profileUrl": "https://cornwallpoliticalwatch.com/councillors/john-doe",
"attendance": {
"total": 24,
"present": 20,
"percentage": 83
},
"redFlags": []
}
],
"count": 87,
"source": "Cornwall Political Watch",
"url": "https://cornwallpoliticalwatch.com"
}/api/public/councillors/{slug}Returns detailed data for a single councillor, including attendance stats, red flags, expenses, code of conduct cases, and their 20 most recent votes. The slug is the councillor's URL-friendly name (e.g. john-doe). Returns 404 if the councillor is not found.
Example response
{
"councillor": {
"slug": "john-doe",
"fullName": "John Doe",
"party": "Conservative",
"ward": "Truro East",
"email": "john.doe@cornwall.gov.uk",
"phone": "01234 567890",
"twitterHandle": "@johndoe",
"profileUrl": "https://cornwallpoliticalwatch.com/councillors/john-doe",
"attendance": {
"total": 24,
"present": 20,
"percentage": 83
},
"redFlags": [
{
"type": "low_attendance",
"description": "Attendance below 60% threshold",
"detectedAt": "2026-01-15T00:00:00.000Z"
}
],
"expenses": [
{
"financialYear": "2024-25",
"basicAllowance": 15000,
"specialResponsibility": 0,
"travel": 1200,
"subsistence": 0,
"other": 0,
"total": 16200
}
],
"conductCases": [],
"recentVotes": [
{
"position": "for",
"hasInterest": false,
"decision": "Approve planning application PA24/01234",
"outcome": "Approved",
"meeting": "Strategic Planning Committee",
"meetingDate": "2026-02-10T10:00:00.000Z"
}
]
},
"source": "Cornwall Political Watch",
"url": "https://cornwallpoliticalwatch.com"
}/api/public/statsReturns overall platform statistics: total councillors, meetings tracked, active red flags, and decisions recorded.
Example response
{
"councillors": 87,
"meetings": 186,
"activeRedFlags": 12,
"decisions": 340,
"source": "Cornwall Political Watch",
"url": "https://cornwallpoliticalwatch.com"
}Usage guidelines
- No authentication is required. The API is open for everyone.
- Please keep requests reasonable (max 60 per minute). Excessive usage may be rate-limited.
- Responses are cached for up to one hour. Data is updated weekly via our automated pipeline.
- If you build something with this data, we would love to hear about it. Use our contact form to get in touch.
Attribution badge
If you use our API, please display this badge on your site to help others find the data.
Embed with this HTML snippet:
<a href="https://cornwallpoliticalwatch.com">
<img
src="https://cornwallpoliticalwatch.com/api/public/badge"
alt="Powered by Cornwall Political Watch"
/>
</a>Councillor embed widget
You can also embed a councillor scorecard on any website using a single script tag. Replace the slug with the councillor you want to display:
<script src="https://cornwallpoliticalwatch.com/api/embed/councillor/john-doe"></script>