PlanNexus Python SDK
Official Python client for the PlanNexus planning data API — access live planning applications from 100+ UK local authorities through one consistent interface.
Install
pip install plannexus
Requires Python 3.10+. Depends only on httpx.
Usage
Synchronous
from plannexus import PlanNexus
with PlanNexus(api_key="pn_live_...") as client:
# Full-text + structured search
result = client.applications.search(q="extension", postcode="SW1", per_page=10)
for app in result["data"]:
print(app["reference"], "-", app["address"])
# Nearby (radius in metres)
nearby = client.applications.nearby(lat=51.509, lng=-0.118, radius=500)
# Single record with full detail
full = client.applications.get(app["id"])
# One structured property due-diligence dossier (uprn / lat+lng / postcode)
dossier = client.dossier(postcode="SW1A 1AA")
Asynchronous
import asyncio
from plannexus import AsyncPlanNexus
async def main():
async with AsyncPlanNexus(api_key="pn_live_...") as client:
result = await client.applications.search(postcode="SW1")
print(f"Matched {result['meta']['total']} applications")
asyncio.run(main())
Rate limits & retries
The client automatically retries 429 Too Many Requests up to 3 times,
honouring the Retry-After header when present. After retries are
exhausted a RateLimitError is raised with the .retry_after attribute.
from plannexus import PlanNexus, RateLimitError
try:
client.applications.search(...)
except RateLimitError as e:
print(f"Still rate-limited; hint was {e.retry_after}s")
Error handling
Any non-2xx (other than handled 429s) raises PlanNexusError with
.status_code, .detail, and .body populated from the response.
Links
Metadata
Release files for plannexus 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| plannexus-0.2.0.tar.gz | 6.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| plannexus-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 12.4 kB
Release files / plannexus-0.2.0.tar.gz
| Download URL | plannexus-0.2.0.tar.gz |
|---|---|
| Size | 6.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
22092e8458216ca2d641db25e10c1bf6a6070459e97dbc59c89713d835c23f2a
|
|
BLAKE2b-256 checksum How to use checksums |
dfc273931d0deff3c78ab866828bcb028d023d267e94148ec51697bdb6672536
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / plannexus-0.2.0-py3-none-any.whl
| Download URL | plannexus-0.2.0-py3-none-any.whl |
|---|---|
| Size | 5.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d4378765e2d54ded1a144622a7fac381ab3184821c5a51c8f5e24507d79d6e3
|
|
BLAKE2b-256 checksum How to use checksums |
4ba9beb53d4d1336a24c73562936dfe251a39ed0393e3f9fb6882878908d13d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.32 {"installer":{"name":"uv","version":"0.11.32","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|