REST API · bulk export · webhooks

The only Irish construction-data API — in your stack.

No other Irish construction-leads source gives you the data programmatically. Planning applications, commencement notices, company contacts and market intelligence behind one REST endpoint — 21,943 leads across all 31 authorities, updated weekly. Query it, bulk-export it, or have matching leads pushed to you in real time.

REST over HTTPS · Bearer auth · keyset pagination · OpenAPI spec.

Two construction professionals reviewing plans on a tablet on site

The only Irish construction dataset you can wire straight into your stack, your CRM, your tools.

What you can pull

The whole dataset, on tap — what no one else offers

Leads — search & filter

GET /v1/leads with full querying: text, vertical, authority, readiness, min_value, min_units, has_contact. Keyset-paginated.

Bulk export

Stream the entire filtered dataset as JSONL for ETL & pandas, or pull it as a one-shot CSV. The whole dataset, your warehouse.

Lead detail — company 360

GET /v1/leads/{id}: project, zoning & appeals, area comparables, suppliers, plus the registered company and verified contacts.

Market intelligence

GET /v1/intel/analytics: yield estimates, a repeat-sale price index, emerging zones and material-cost trends — all PII-free.

Webhooks

Push delivery of new leads matching your saved filters — HMAC-signed, no polling. lead.new, lead.on_site and lead.updated events.

OpenAPI spec

Every endpoint, parameter and response schema in a machine-readable openapi.json — generate clients, browse Swagger or ReDoc.

Quickstart

Authenticated in one header

Create a key once you're on the Max plan, then send it as a Bearer token on any read endpoint. Every response carries X-RateLimit-* headers so you can back off cleanly.

bash
# Authenticate any read endpoint with your Bearer key.
curl -H "Authorization: Bearer pl_live_…" \
  "https://planningleads.ie/api/v1/leads?readiness=commencing&vertical=solar&min_units=20"

Bulk-export the dataset

import pandas as pd, requests

# Stream the whole filtered dataset as JSONL straight into a DataFrame.
url = "https://planningleads.ie/api/v1/export/applications.jsonl"
headers = {"Authorization": "Bearer pl_live_…"}
params = {"readiness": "commencing", "min_units": 20}

resp = requests.get(url, headers=headers, params=params, stream=True)
df = pd.read_json(resp.raw, lines=True)

print(df[["planning_authority", "est_value", "lead_readiness"]].head())

Individual (homeowner) names are masked — organisation-level data only, GDPR-safe.

Webhooks

New matching leads, pushed to you — no polling

Register a webhook and we POST leads that match your saved filters the moment they appear. Each request is HMAC-SHA256 signed with an X-PL-Signature header — recompute it over the raw body and compare timing-safe. The docs carry copy-paste Python and Node verification snippets.

lead.newlead.on_sitelead.updated

Built for

Wire it into the tools you already run

QS & estimating tools

Pull commencing schemes by unit count and estimated value, with material-cost trends to feed pricing models and BoQs.

Proptech & CRMs

Sync filtered leads and company 360 records straight into your pipeline; get new matches pushed over webhooks as they file.

Investors & analysts

Query the repeat-sale index, yield estimates and emerging zones across 790k PPR sales to back development and acquisition calls.

Estate agents

Track planning and commencements in your patch, surface the developer behind each site, and reach out before it lists.

PII-safe by design

Organisation-level data only — individual (homeowner) names are masked. Built around Ireland's open-data licence and GDPR.

Rate-limited & paginated

Standard X-RateLimit-* headers and keyset pagination keep large pulls stable and predictable.

On the Max plan

Programmatic access, bulk export and webhooks are included with Max. Create a key from your account.

Start building.

Get an API key on the Max plan and pull the dataset into your stack.