# England Protected Site Check: SSSI, AONB & Green Belt (`japan-open-data/england-protected-site-lookup`) Actor

Check England postcodes or lat/long against 13 official designations: SSSI, SAC, SPA, Ramsar, ancient woodland, National Park, Green Belt, AONB, nutrient neutrality and more. Screen up to 1,000 candidate sites per run. Official open data, no API key, JSON/CSV via API or MCP. $5 per 1,000 checks.

- **URL**: https://apify.com/japan-open-data/england-protected-site-lookup.md
- **Developed by:** [Japan Open Data](https://apify.com/japan-open-data) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 protected site checks

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## England Protected Site Check: SSSI, AONB & Green Belt

**Check up to 1,000 England postcodes or coordinates against 13 official nature and planning designations, from SSSI and ancient woodland to National Park, AONB and Green Belt.**
**Official UK government open data from the Planning Data Platform (Natural England, Defra and council boundaries), Open Government Licence: no API key, no login, no personal data.**
**One flat JSON row per location with a yes/no flag, name and reference for each designation, for $5 per 1,000 protected site checks. Invalid and non-England inputs are free.**

| | Free official maps (MAGIC, planning.data.gov.uk) | Paid planning report or records-centre search | **This Actor** |
|---|---|---|---|
| Coverage | All layers, one point at a time, by hand | One site per order | **13 designations, up to 1,000 locations per run** |
| Output | Web map | PDF report | **Flat JSON / CSV / Excel, API and MCP** |
| Price | Free, but manual | About £42–£72 per planning report, £170–£250 per ecological data search | **$0.005 per checked location (errors free)** |

### What can you do with England Protected Site Check?

1. **Screen a land or site list.** Land promoters, housebuilders and solar, wind, battery or data centre developers drop candidate sites inside a SSSI, SAC, National Park, National Landscape or Green Belt, and flag Nutrient Neutrality catchments, before anyone pays for surveys.
2. **Start an ecological desk study.** Ecologists get the statutory sites on the red line for a whole batch of sites at once before a Preliminary Ecological Appraisal or Biodiversity Net Gain (BNG) assessment. `habitatsSiteOnSite` flags SAC, SPA and Ramsar sites, which can trigger a Habitats Regulations Assessment.
3. **Add designations to property due diligence or an AI agent.** Put nature and landscape constraints next to flood risk and heritage in a portfolio screen, or let an agent answer "Is this site in the Green Belt or a SSSI?" with the ready-made `protectedSiteSummary` sentence.

> **Screening data, not an ecological survey or a planning search.** The Actor returns the official boundaries as published. It does not replace a site visit, an ecologist, Natural England's advice or a local authority search.

### How to use

1. Click **Start** to try the default input (a postcode in Lyndhurst, New Forest, and Box Hill in the Surrey Hills).
2. Paste your postcodes or `"latitude,longitude"` strings, up to 1,000.
3. Download the rows as JSON, CSV or Excel, or call the Actor via the API or MCP.

### Input

Only `locations` is required.

| Input | Type | Default | What it does |
|---|---|---|---|
| `locations` | list | `["SO43 7NY", "51.2506,-0.3106"]` | UK postcodes (any spacing or case) and/or `"latitude,longitude"` strings. Via the API also objects with a `label`: `{"postcode": "SO43 7NY", "label": "Site A"}` or `{"latitude": 51.2506, "longitude": -0.3106, "label": "Site B"}`. Up to 1,000 per run, one row each, in input order. |

```json
{
  "locations": [
    { "latitude": 50.85, "longitude": -1.60, "label": "New Forest" },
    "51.2506,-0.3106",
    "MK9 3QA"
  ]
}
```

Postcodes are checked at the postcode centroid (one point from the ONS Postcode Directory). For a specific field or building, pass its coordinates.

### Output

Real output (2026-10-03) for Box Hill, `"51.2506,-0.3106"`, shortened (empty designations and some columns left out):

```json
{
  "status": "ok",
  "input": "51.2506,-0.3106",
  "label": null,
  "latitude": 51.2506,
  "longitude": -0.3106,
  "insideAnyDesignation": true,
  "designationCount": 5,
  "designationsOnSite": "SSSI; SAC; Ancient Woodland; National Landscape (AONB); Green Belt",
  "habitatsSiteOnSite": true,
  "protectedSiteSummary": "The point is inside: SSSI (Mole Gap to Reigate Escarpment SSSI), SAC (Mole Gap to Reigate Escarpment), Ancient Woodland (ASNW), National Landscape (AONB) (Surrey Hills), Green Belt (Mole Valley). It lies within a Habitats Site (SAC, SPA or Ramsar), so development may need a Habitats Regulations Assessment.",
  "sssiOnSite": true,
  "sssiName": "Mole Gap to Reigate Escarpment SSSI",
  "sssiReference": "1000977",
  "sssiEntryDate": "2026-08-20",
  "sacOnSite": true,
  "sacName": "Mole Gap to Reigate Escarpment",
  "sacReference": "UK0012804",
  "spaOnSite": false,
  "ancientWoodlandOnSite": true,
  "ancientWoodlandStatus": "Ancient semi-natural woodland (ASNW)",
  "nationalParkOnSite": false,
  "aonbOnSite": true,
  "aonbName": "Surrey Hills",
  "greenBeltOnSite": true,
  "greenBeltName": "Mole Valley",
  "nutrientNeutralityCatchmentOnSite": false,
  "attribution": "Contains public sector information licensed under the Open Government Licence v3.0. (c) Crown copyright and database right 2026.",
  "dataObtained": "2026-10-03"
}
```

Other test locations: the New Forest (50.85,-1.60) is inside a SSSI, SAC, SPA, Ramsar site, National Park and the Solent Nutrient Neutrality catchment; Trafalgar Square is in the Westminster AQMA; Milton Keynes (MK9 3QA) returns an `ok` row with every flag `false`.

Unknown postcodes, places outside England and invalid input return a free row that says what to change:

```json
{"status": "error", "input": "CF10 1EP", "error": "Location #4 (CF10 1EP) is in Wales; this Actor covers England only (Welsh designations are published by Natural Resources Wales)."}
```

#### Output fields

Each designation has four columns: `<key>OnSite` (true/false), `<key>Name`, `<key>Reference` and `<key>EntryDate`. If a point is inside two areas of the same kind, values are joined with `"; "`.

| Key | Designation |
|---|---|
| `sssi`, `sac`, `spa`, `ramsar` | Site of Special Scientific Interest, Special Area of Conservation, Special Protection Area, Ramsar wetland |
| `nationalNatureReserve`, `localNatureReserve` | National and Local Nature Reserves |
| `ancientWoodland` | Ancient Woodland Inventory (no names; see `ancientWoodlandStatus`: ASNW or PAWS) |
| `nationalPark`, `aonb`, `heritageCoast` | National Park, National Landscape (formerly AONB), Heritage Coast |
| `greenBelt` | Green Belt, by local authority |
| `nutrientNeutralityCatchment`, `airQualityManagementArea` | Nutrient Neutrality catchment, Air Quality Management Area |

| Field | Meaning |
|---|---|
| `status` | `ok`, `not_found` or `error` |
| `insideAnyDesignation`, `designationCount`, `designationsOnSite` | Whether any of the 13 covers the point, how many, and their short names |
| `habitatsSiteOnSite` | `true` inside a SAC, SPA or Ramsar site |
| `protectedSiteSummary` | One English sentence summarising the row |
| `postcode`, `adminDistrict` | Normalised postcode and local authority (postcode inputs) |
| `attribution`, `source`, `sourceUrl`, `dataObtained` | Attribution to pass on, the data source, the exact request used and the date it was read |
| `error` | On `not_found` / `error` rows: one sentence saying what to change |

`EntryDate` is when the record was last published on the Planning Data Platform, not the original designation date.

### How much does it cost?

Pay per event: you pay per location checked, not for compute time.

| Event | Price | When |
|---|---|---|
| Actor start | $0.00005 | Once per run |
| Protected site check | $0.005 ($5 per 1,000) | Once per `ok` row. `not_found` and `error` rows are free |

| Example | Locations | Cost |
|---|---|---|
| One site | 1 | about $0.005 |
| A shortlist of candidate sites | 50 | about $0.25 |
| A land list or portfolio | 1,000 | about $5.00 |

No monthly fee. Set **Maximum cost per run** when you start the Actor to cap spending: when the limit is reached, the remaining locations are not looked up or charged, and the status message says so.

### Use via API & MCP (AI agents)

```bash
curl -X POST "https://api.apify.com/v2/acts/japan-open-data~england-protected-site-lookup/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"locations": ["SO43 7NY", "51.2506,-0.3106", "MK9 3QA"]}'
```

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
sites = [{"postcode": "SO43 7NY", "label": "Site 1"}, {"latitude": 51.2506, "longitude": -0.3106, "label": "Site 2"}]
run = client.actor("japan-open-data/england-protected-site-lookup").call(run_input={"locations": sites})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["label"], row["status"], row.get("designationsOnSite"), row.get("error"))
```

**MCP:** add the Actor as a tool through the Apify MCP server (https://mcp.apify.com), e.g. `?tools=japan-open-data/england-protected-site-lookup`. Recommended agent settings:

- Single question → `{"locations": ["<postcode or lat,long>"]}` and read `protectedSiteSummary` or the matching `<key>OnSite` flag.
- Many sites → send them all in one run with a `label` each and match rows by `label`.
- Prefer coordinates for fields and rural sites; a rural postcode centroid can be hundreds of metres away.
- Always check `status`; on `not_found` / `error`, show the `error` sentence to the user.

### FAQ

**Can I use this instead of an ecological survey or a planning search?**
No. It is a screening step that tells you which sites need one.

**Does `insideAnyDesignation: false` mean there are no ecological constraints?**
No. Protected species, priority habitats, SSSI Impact Risk Zones, local wildlife sites and nearby designations are not included.

**Is it legal to use this data commercially?**
Yes. Every dataset is published on planning.data.gov.uk under the Open Government Licence v3.0, which allows commercial re-use with attribution. Each row carries the attribution text.

**How fresh is the data?**
Every run queries the live Planning Data Platform, updated as Natural England, Defra and councils publish new boundaries.

**What if I see "could not be reached" or "is not responding"?**
planning.data.gov.uk or postcodes.io is down. The Actor stops trying after about a minute and returns free `error` rows; run it again later.

### Known limitations

- **England only.** Wales, Scotland, Northern Ireland, the Isle of Man and the Channel Islands are not covered (free `error` or `not_found` rows).
- **The point only.** Distances to nearby sites, Impact Risk Zones and buffers are not included.
- **Coast and estuaries.** In a check of 8 points, inland National Landscape boundaries matched Natural England's own copy; 3 points on the shore or at sea (Solent, Dorset coast) did not.
- **Council data.** Green Belt and AQMA boundaries come from councils and can lag local plan changes.
- **Current designations only.** Revoked or de-notified areas are excluded.
- **Duplicates.** The same location passed twice is checked and charged twice.

### Data source and license

- **Designations:** Planning Data Platform, Ministry of Housing, Communities and Local Government, https://www.planning.data.gov.uk/ (13 datasets, each published with `licence: ogl3`).
- **Attribution:** Contains public sector information licensed under the [Open Government Licence v3.0](https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/). © Crown copyright and database right 2026.
- **Postcodes:** [postcodes.io](https://postcodes.io), from the ONS Postcode Directory. Contains OS data © Crown copyright and database right; Contains Royal Mail data © Royal Mail copyright and database right; Source: Office for National Statistics licensed under the Open Government Licence v3.0.
- **England check for coordinates:** ONS Countries (December 2024) Boundaries UK BUC, Open Government Licence v3.0.
- Boundaries are as published, not surveyed, and are provided "as is".
- **Not affiliated** with, endorsed by or sponsored by MHCLG, Natural England, Defra, ONS or postcodes.io.
- One small request per location (boundary polygons are never downloaded). No personal data.

### More from Japan Open Data

- [England Listed Building & Conservation Area Check](https://apify.com/japan-open-data/england-heritage-constraint-lookup) — the heritage check for the same site list: official listed buildings, scheduled monuments, conservation areas and Article 4 directions for any postcode or coordinates in England, one row per location.
- [UK Flood Risk Lookup by Postcode (England)](https://apify.com/japan-open-data/uk-flood-zone-lookup) — the sister check for the same property list: official Environment Agency Flood Zone 1/2/3, recorded floods and the nearest flood defence, one row per postcode.
- [US Flood Zone Lookup by Address (FEMA NFHL)](https://apify.com/japan-open-data/us-flood-zone-lookup) — official FEMA flood zone (A, AE, VE, X…), base flood elevation and FIRM panel for any U.S. address or coordinates.
- [France Property Risk Lookup by Address (Georisques)](https://apify.com/japan-open-data/france-property-risk-lookup) — the same kind of property screening for France: official natural and industrial risks for any French address.
- [UK Waste Carrier Licence Check (Environment Agency)](https://apify.com/japan-open-data/uk-waste-carrier-register) — check whether an English business is a registered waste carrier, broker or dealer.
- [NSW Rent Prices by Postcode (Official Bond Data)](https://apify.com/japan-open-data/nsw-rental-bond-rents) — median weekly rents for any New South Wales postcode or suburb by dwelling type and bedrooms, from NSW Fair Trading's official rental bond data, with quartiles and year-over-year change.
- [Korea E-commerce Company Leads (KFTC Register)](https://apify.com/japan-open-data/korea-online-seller-registry) — new Korean e-commerce companies from the official KFTC online seller register (통신판매업), in English with business registration number and store platform.
- [Poland Building Permits API: Construction Leads](https://apify.com/japan-open-data/poland-building-permits) — new Polish building permits (pozwolenia na budowę) issued to companies and public bodies, with investor, building category and site, from the official GUNB register.
- [Taiwan Real Estate Sold Prices API in English](https://apify.com/japan-open-data/taiwan-property-sold-prices) — official Taiwan actual-price-registration sales (buildings, land, parking) by city and district, translated into English with price per ping and per m².
- [France Building Permits API: Construction Leads](https://apify.com/japan-open-data/france-building-permits) — official French building permits (Sitadel) filed by companies, by department, commune or date, with SIREN, project type and floor areas.
- [UK Importers & Exporters by Product (HMRC Data)](https://apify.com/japan-open-data/uk-importer-exporter-directory) — UK companies that imported or exported a product each month, by HS code or keyword, from official HMRC trade data, with new traders flagged for lead lists.
- [UK Visa Sponsor Register Tracker (Daily Changes)](https://apify.com/japan-open-data/uk-visa-sponsor-register) — new, removed and downgraded UK visa sponsor licences from the official Home Office register, or check whether a company can sponsor workers.
- [UK HGV Operator Licence Lookup (Official DVSA)](https://apify.com/japan-open-data/uk-hgv-operator-licence) — the official DVSA / Traffic Commissioner register of UK truck and bus operator licences.
- [US Hail History by Location (NOAA NEXRAD Radar)](https://apify.com/japan-open-data/us-hail-history) — every hail day near any U.S. latitude/longitude with max estimated hail size.
- [US Storm Reports API: Hail, Wind & Tornado (NWS)](https://apify.com/japan-open-data/us-storm-reports-live) — U.S. hail, wind, tornado and flood reports from official NWS Local Storm Reports within hours.
- [Argentina Fuel Prices API by Station (Official)](https://apify.com/japan-open-data/argentina-fuel-station-prices) — last reported prices at every Argentine gas station.
- [Mexico Gas Prices API by Station (Official CNE)](https://apify.com/japan-open-data/mexico-fuel-station-prices) — today's regular, premium and diesel prices at every Mexican gas station.
- [TSA Checkpoint Travel Numbers (Daily, Weekly & YoY)](https://apify.com/japan-open-data/tsa-checkpoint-throughput) — daily U.S. TSA airport checkpoint traveler counts as clean JSON.
- [Japan Postal Code & Address in English](https://apify.com/japan-open-data/japan-postal-code-english) — Japanese postal codes and addresses in English/romaji, kanji and kana.
- [UK NHS Organisation Lookup (Official ODS Codes)](https://apify.com/japan-open-data/uk-nhs-organisation-lookup) — GP practices, pharmacies, dentists, hospitals and NHS trusts from the official ODS register, by postcode, type or ODS code (organisations only).

### Feedback

Found a wrong value or need another layer? Open an issue on the **Issues** tab with your input and what you expected. Next-version candidates: distance to the nearest SSSI / SAC / SPA, SSSI Impact Risk Zones, tree preservation orders, Wales and Scotland.

# Actor input Schema

## `locations` (type: `array`):

Places in England to check, one per line: a UK postcode (e.g. "SO43 7NY") or "latitude,longitude" in decimal degrees (e.g. "51.2506,-0.3106"). Via the API you can also pass objects like {"postcode": "SO43 7NY", "label": "Site A"} or {"latitude": 51.2506, "longitude": -0.3106, "label": "Site B"}. Up to 1,000 locations per run; each gets one output row.

## Actor input object example

```json
{
  "locations": [
    "SO43 7NY",
    "51.2506,-0.3106"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

SSSI, SAC, SPA, Ramsar, National and Local Nature Reserve, Ancient Woodland, National Park, National Landscape (AONB), Heritage Coast, Green Belt, Nutrient Neutrality catchment and Air Quality Management Area flags for each postcode or coordinate. Table view: overview.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "locations": [
        "SO43 7NY",
        "51.2506,-0.3106"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("japan-open-data/england-protected-site-lookup").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "locations": [
        "SO43 7NY",
        "51.2506,-0.3106",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("japan-open-data/england-protected-site-lookup").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "locations": [
    "SO43 7NY",
    "51.2506,-0.3106"
  ]
}' |
apify call japan-open-data/england-protected-site-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,japan-open-data/england-protected-site-lookup"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/A4rrgBwcXqMEyiNYi/builds/bMlMcDVtWUwRoaV3P/openapi.json
