Developers & open data
Every page on this site is a rendering of a record you can fetch as JSON. Same data, same ordering.
Base URL: https://afootly.com/api/v1. Spec: openapi.json. For language models: /llms.txt.
Endpoints
GET /areasAll areas with boundariesGET /areas/{slug}One areaGET /areas/{slug}/businesses?category=&q=&page=Directory listings, same ordering as the siteGET /areas/{slug}/events?from=&to=&age_min=&age_max=&indoor_outdoor=&cost_band=Events, with the family-friendly filtersGET /areas/{slug}/planning?since=&state=&council=Planning applicationsGET /areas/{slug}/capacityLive cancellations and free slotsGET /areas/{slug}/dealsLive dealsGET /areas/{slug}/data/{river|fuel|weather|power-cuts|crime}Live data feedsGET /businesses/{slug}A business, with structured review summaryGET /categoriesControlled vocabularyGET /feedsIngestion statusPOST /areas/{slug}/eventsSubmit an event (API key required) → moderation queue
Keys and limits
Reads are free and work without a key at a modest rate. For anything sustained, get a free key so we can meter it and tell you before anything changes. Send it as X-Api-Key or a Bearer token. Writes always need a key and land in the same moderation queue as human submissions.
Request a key: hello@afootly.com.
Conventions
- Stable slugs and UUIDs; slugs never change once published.
- ISO 8601 timestamps, UTC.
lat/lngon everything with a location. - Structured opening hours:
{"mo":[["09:00","17:00"]], "su":[]}. - Pagination via
pageandpage_size(max 100); responses carrytotal. - Quotes on the jobs board are never exposed individually; aggregates appear only above n=5.
Licence & attribution
Our own data (listings, events, reviews summaries) is available under CC BY 4.0 with attribution to Afootly. Ingested data keeps its source licence — OpenStreetMap (ODbL), FSA, EA, NRW, police.uk (OGL), council planning data via PlanIt — and each record says where it came from.