AreaIQ API

Integrate UK area intelligence into your applications. Generate data-driven location reports powered by 7 government and open data sources.

v1 · StableREST • JSON • Bearer auth • HTTPS only

Try the API

Test the AreaIQ API with real UK postcodes. No API key needed for the playground.

Try it live
No API key required
Select an area and click Run to see a live API response

Quickstart

1Get your API key

Subscribe to a Developer, Business, or Growth plan and generate a key from your dashboard.

2Make a request

Send a POST request with an area name and intent type.

3Get intelligence

Receive a scored report with 5 data-backed dimensions.

bash
curl -X POST https://www.area-iq.co.uk/api/v1/report \
  -H "Authorization: Bearer aiq_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"area": "Shoreditch", "intent": "business"}'

Authentication

All API requests require a Bearer token in the Authorization header. Generate API keys from your dashboard. Requires a Developer, Business, or Growth plan (from £49/mo).

Authorization: Bearer aiq_your_api_key_here
Security

API keys carry full account access. Do not expose them in client-side code or public repositories. Keys can be revoked instantly from your dashboard.

Endpoint

POSThttps://www.area-iq.co.uk/api/v1/report

All requests must use HTTPS. HTTP requests will be rejected.

Request Body

Send a JSON body with the area to analyse and the intent type. The intent determines which scoring dimensions and weights are applied.

areastringYesUK area name or postcode. E.g. "Shoreditch", "SW1A 1AA", "Manchester city centre"
intentstringYesAnalysis intent. One of: moving, business, investing, research

Intent Types & Scoring Dimensions

moving· Residential relocation
Safety
Schools
Transport
Amenities
Cost of Living
business· Commercial viability
Foot Traffic
Competition
Transport
Spending Power
Costs
investing· Property investment
Price Growth
Rental Yield
Regeneration
Tenant Demand
Risk
research· General area profile
Demographics
Economy
Infrastructure
Environment
Liveability

Response

Successful requests return 200 OK with the report ID and full report object.

Response Schema

idstringUnique report ID (e.g. rpt_1709834567_a1b2c3)
areastringNormalised area name
intentstringIntent type used for scoring
areaiq_scorenumberOverall weighted score (0–100)
sub_scoresSubScore[]5 intent-specific scored dimensions
labelstringDimension name
scorenumberDimension score (0–100)
weightnumberRelative weight in overall score
summarystringData-backed explanation for this score
summarystring2–3 sentence executive summary
sectionsSection[]4–6 detailed analysis sections
titlestringSection heading
contentstringSection narrative
data_pointsDataPoint[]?Key-value data points (optional)
recommendationsstring[]3+ actionable recommendations
data_sourcesstring[]Data sources used in this report
generated_atstringISO 8601 timestamp

Example Response

json
{
  "id": "rpt_1709834567_a1b2c3",
  "report": {
    "area": "Shoreditch, London",
    "intent": "business",
    "areaiq_score": 74,
    "sub_scores": [
      {
        "label": "Foot Traffic & Demand",
        "score": 82,
        "summary": "45,000 daily commuters via Liverpool Street station. 23 restaurants within 500m suggests strong baseline footfall."
      },
      {
        "label": "Competition Landscape",
        "score": 68,
        "summary": "High density of similar businesses in EC2A. 12 direct competitors identified within 1km radius."
      },
      {
        "label": "Transport Accessibility",
        "score": 79,
        "summary": "4 tube/rail stations within 15-minute walk. Bus routes along Old Street and Shoreditch High Street."
      },
      {
        "label": "Spending Power",
        "score": 71,
        "summary": "IMD decile 6 for income. Mixed demographic with high disposable income among tech workers."
      },
      {
        "label": "Operating Costs",
        "score": 62,
        "summary": "Commercial rents averaging £55-70/sqft. Above London average but justified by footfall density."
      }
    ],
    "summary": "Shoreditch scores 74/100 for business viability. Strong foot traffic and transport links offset higher operating costs. The area's tech-driven economy creates consistent demand.",
    "sections": [
      {
        "title": "Location & Demographics",
        "content": "Shoreditch sits within the London Borough of Hackney...",
        "data_points": [
          { "label": "Ward", "value": "Hoxton East & Shoreditch" },
          { "label": "Constituency", "value": "Hackney South and Shoreditch" },
          { "label": "IMD Decile", "value": "6 (mid-range)" }
        ]
      },
      {
        "title": "Safety & Crime",
        "content": "276 crimes recorded in the last 3 months within 1 mile...",
        "data_points": [
          { "label": "Total crimes (3 months)", "value": "276" },
          { "label": "Most common", "value": "Theft (34%)" },
          { "label": "Trend", "value": "Stable" }
        ]
      }
    ],
    "recommendations": [
      "Consider locations east of Shoreditch High Street for 15-20% lower rents with comparable footfall",
      "Target the lunch trade: 45,000 weekday commuters create peak demand 12:00-14:00",
      "Monitor the Bishopsgate Goodsyard redevelopment for potential uplift in foot traffic by 2027"
    ],
    "data_sources": [
      "postcodes.io",
      "police.uk",
      "IMD 2025",
      "OpenStreetMap",
      "Environment Agency",
      "HM Land Registry",
      "Ofsted"
    ],
    "generated_at": "2026-03-07T12:34:56.789Z"
  }
}

Error Handling

Errors return a JSON object with an error field describing the issue.

200OKReport generated successfully
400Bad RequestMissing or invalid area/intent field
401UnauthorizedMissing, invalid, or revoked API key
403ForbiddenActive API plan subscription required (Developer, Business, or Growth)
500Server ErrorInternal error. Retry or contact support
json
// Error response format
{
  "error": "Missing required field: area (string)"
}

Data Sources

Every report is grounded in real UK government and open data, fetched live for each request. No cached or estimated data.

postcodes.ioONS / Royal MailGeocoding, ward, LSOA, constituency, region, country
police.ukHome OfficeStreet-level crime data, 3-month rolling window, category breakdown, trends
IMD 2025MHCLG via ArcGISIndex of Multiple Deprivation: rank and decile by LSOA
OpenStreetMapOverpass APISchools, restaurants, pubs, healthcare, shops, parks, transport stops within radius
Environment AgencyDefraFlood risk zones, active flood warnings and alerts
HM Land RegistryHM Land RegistrySold prices by postcode district, property types, tenure split, YoY trends
OfstedDepartment for EducationSchool inspection ratings for state-funded schools within 1.5km. England only.

Rate Limits

Monthly reports300Calendar month (resets 1st)
Response time10–20sPer request (live data fetch + AI)
Concurrent requestsSupportedNo hard limit

Need higher volume? Contact hello@area-iq.co.uk for custom enterprise limits.

Embed Widget

Add area intelligence to any website with a single script tag. No API key required. The widget is rate limited and cached, designed for public-facing pages like property listings.

Basic usage
html
<!-- Add this where you want the widget to appear -->
<div
  data-areaiq-postcode="SW1A 1AA"
  data-areaiq-intent="moving"
></div>

<!-- Add this before </body> -->
<script src="https://www.area-iq.co.uk/widget.js"></script>
Attributes
data-areaiq-postcodeRequiredUK postcode or area name
data-areaiq-intentOptionalmoving (default), business, investing, or research
data-areaiq-themeOptionaldark (default) or light
Multiple widgets on one page
html
<div data-areaiq-postcode="E1 6AN" data-areaiq-intent="investing"></div>
<div data-areaiq-postcode="SW11 1AA" data-areaiq-intent="moving"></div>
<div data-areaiq-postcode="M1 1AD" data-areaiq-intent="business" data-areaiq-theme="light"></div>

<script src="https://www.area-iq.co.uk/widget.js"></script>
Rate limits

The widget endpoint allows 60 requests per hour per domain. Responses are cached for 24 hours, so repeated loads of the same postcode are served instantly at no cost.

Code Examples

The API returns standard JSON over HTTPS. No SDK required, use any HTTP client.

cURL

bash
curl -X POST https://www.area-iq.co.uk/api/v1/report \
  -H "Authorization: Bearer aiq_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "area": "Shoreditch",
    "intent": "business"
  }'

Node.js / TypeScript

typescript
const response = await fetch("https://www.area-iq.co.uk/api/v1/report", {
  method: "POST",
  headers: {
    "Authorization": "Bearer aiq_your_api_key",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    area: "Camden",
    intent: "investing",
  }),
});

const { id, report } = await response.json();

console.log(report.areaiq_score);       // 72
console.log(report.sub_scores.length);  // 5
console.log(report.recommendations);    // ["Consider...", ...]

Python

python
import requests

response = requests.post(
    "https://www.area-iq.co.uk/api/v1/report",
    headers={"Authorization": "Bearer aiq_your_api_key"},
    json={"area": "Camden", "intent": "investing"},
)

data = response.json()
report = data["report"]

print(f"Score: {report['areaiq_score']}/100")
print(f"Dimensions: {len(report['sub_scores'])}")

for sub in report["sub_scores"]:
    print(f"  {sub['label']}: {sub['score']}/100")

Go

go
payload := map[string]string{
    "area":   "Manchester",
    "intent": "moving",
}

body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", "https://www.area-iq.co.uk/api/v1/report", bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer aiq_your_api_key")
req.Header.Set("Content-Type", "application/json")

resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()

var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)