Childcare Market Intelligence API - integration guide
This guide is delivered with a Childcare Market Intelligence key. It is written for data scientists, GIS analysts and product teams integrating the feed into a database, dashboard, map or report workflow.
Interactive reference: https://daleads.com.au/api/v1/childcare/docs
Browser-readable guide: https://daleads.com.au/api/v1/childcare/guide
Machine-readable OpenAPI: https://daleads.com.au/api/v1/childcare/openapi.json
Base URL: https://daleads.com.au
Preview the output before integrating:
- Example PDF:
https://daleads.com.au/static/samples/childcare-market-intelligence/example-report.pdf?v=20260812-liverpool-v2 - PDF first-page preview:
https://daleads.com.au/static/samples/childcare-market-intelligence/example-report-preview.png?v=20260812-liverpool-v2 - Report maps use the same DA Leads product-map style as the supplied Spectrum sample. The API renders and embeds the finished map; customers do not need to configure a Mapbox token. Mapbox/OpenStreetMap attribution is retained in every HTML/PDF map.
- Corresponding JSON:
https://daleads.com.au/static/samples/childcare-market-intelligence/example-analysis.json?v=20260812-liverpool-v2
The PDF and JSON use the same production-derived 8.5 km Liverpool catchment,
generated on 12 August 2026 from records tracked since 19 May 2026. Council
references, public project addresses, lodgement dates, captured status values and
proposal text are real captured values. Counts describe the tracked pipeline at
that snapshot date; they are not operating-centre counts or a demand forecast.
The status values are not a live council-status guarantee; use observed_at or
last_observed_at when reconciling changes.
1. Authentication
Send the assigned key in the Authorization header on every request:
Authorization: Bearer YOUR_KEY
Do not place the key in browser JavaScript, a mobile app bundle, a URL or a shared spreadsheet. Call DA Leads from your own server and return only the data or file your front end needs.
Start by checking the contract:
curl --get 'https://daleads.com.au/api/v1/childcare/schema' \
--header 'Authorization: Bearer YOUR_KEY'
The response identifies the product/version, stable dimensions and endpoint
paths. Pin product=childcare_market_intelligence and version=v1 in your
integration monitoring.
2. Choose the right endpoint
| Need | Method and path | Response |
|---|---|---|
| Complete entitled childcare rows | GET /api/v1/das |
JSON pages |
| Dashboard totals and trends | GET /api/v1/childcare/analysis |
JSON |
| Circular site catchment | GET /api/v1/childcare/site-analysis |
JSON |
| Your drive-time or custom catchment | POST /api/v1/childcare/site-analysis |
JSON |
| Spreadsheet/model input | GET /api/v1/childcare/export?format=csv |
CSV file |
| GIS/map input | GET /api/v1/childcare/export?format=geojson |
GeoJSON file |
| Circular catchment report | GET /api/v1/childcare/report?format=pdf |
PDF file |
| Your Polygon report | POST /api/v1/childcare/report?format=pdf |
PDF file |
| Browser-ready report | either report endpoint with format=html |
HTML |
The report format parameter selects the response. A PDF is not uploaded. The
server analyses the coordinates or Polygon, builds the report and returns the
finished file.
3. Complete pipeline ingestion
Use the row feed when you need to reconcile against an existing development database or run your own models:
curl --get 'https://daleads.com.au/api/v1/das' \
--header 'Authorization: Bearer YOUR_KEY' \
--data-urlencode 'state=VIC' \
--data-urlencode 'since=2026-05-19' \
--data-urlencode 'per_page=100' \
--data-urlencode 'page=1'
Follow meta.pages. Upsert on id; retain council_reference for matching to
council, LeadManager, Cordell or internal records. The supplied
childcare_pipeline_stage and childcare_works_type fields remove the need to
normalize council wording independently.
observed_at is a best-effort re-seen timestamp, not a deletion stream or a
durable change cursor. Poll with overlap, use idempotent upserts and run a full
reconciliation periodically.
To download every page and create a prefilled trial-review worksheet without writing pagination code, use the supplied helper:
curl --output childcare_trial_reconciliation.py \
'https://daleads.com.au/api/v1/childcare/reconciliation-helper'
python3 childcare_trial_reconciliation.py --output childcare-trial-review.csv
The script securely prompts for the key without echoing it or placing it in
shell history/process arguments. Alternatively, set DALEADS_API_KEY in the
calling process environment. The script refuses to overwrite an existing
worksheet unless --force is supplied, so a later refresh cannot silently
erase customer review columns.
The output retains the DA Leads identifiers and observed timestamp, and adds
blank customer_match, customer_source, customer_record_id,
classification_review and review_notes columns. Business Geographics can
load the file into its database or spreadsheet and record only the exceptions.
4. Dashboard analysis
curl --get 'https://daleads.com.au/api/v1/childcare/analysis' \
--header 'Authorization: Bearer YOUR_KEY' \
--data-urlencode 'state=VIC' \
--data-urlencode 'since=2026-05-19'
The response contains:
headline: total and current pipeline-stage counts;trend: continuous monthly rows, including zero months;breakdowns: stage, works type, state, council and suburb;coverage: geocoding, reference/status availability, freshness and per-state/per-council diagnostics;demand_signals: aggregated all-development, subdivision, lot and dwelling context;geojson: map-ready childcare development points.
Abbreviated response example:
{
"data": {
"scope": {
"product": "childcare_market_intelligence",
"version": "v1"
},
"headline": {
"total": 8,
"under_assessment": 3,
"advertised": 1,
"approved": 3,
"refused": 1
},
"trend": [
{"month": "2026-06", "total": 2},
{"month": "2026-07", "total": 4},
{"month": "2026-08", "total": 2}
],
"coverage": {
"records": 8,
"geocoded_pct": 100.0,
"council_reference_pct": 100.0,
"status_present_pct": 87.5,
"geojson_truncated": false
},
"geojson": {
"type": "FeatureCollection",
"features": []
}
}
}
The complete downloadable sample includes the other documented sections. Do not hard-code the illustrative counts above; use the live response.
Use feature_limit only to limit embedded map features. Headline, trend and
breakdown counts continue to use the complete entitled result. Read
coverage.geojson_truncated before treating the embedded map as complete.
5. Circular site analysis
All three location parameters and state are required:
curl --get 'https://daleads.com.au/api/v1/childcare/site-analysis' \
--header 'Authorization: Bearer YOUR_KEY' \
--data-urlencode 'lat=-37.8136' \
--data-urlencode 'lng=144.9631' \
--data-urlencode 'radius_km=2' \
--data-urlencode 'state=VIC' \
--data-urlencode 'suburb=Melbourne'
The radius can be 0.1 to 30 km. Coordinates must resolve to the requested state and the state must be allowed by the key.
suburb is optional. Supply it only when suburb-level ABS context is useful.
The demographic section remains a suburb fact and is not represented as a
radius statistic.
6. Customer drive-time or custom Polygon
Export the catchment from your GIS or drive-time engine as WGS84 GeoJSON (longitude, latitude), then send it as the request body:
curl --request POST \
'https://daleads.com.au/api/v1/childcare/site-analysis' \
--header 'Authorization: Bearer YOUR_KEY' \
--header 'Content-Type: application/json' \
--data @catchment-request.json
catchment-request.json:
{
"state": "VIC",
"suburb": "Melbourne",
"catchment": {
"type": "Polygon",
"coordinates": [[
[144.9400, -37.8200],
[144.9900, -37.8200],
[144.9900, -37.7800],
[144.9400, -37.7800],
[144.9400, -37.8200]
]]
}
}
GeoJSON Feature wrappers and Polygon holes are supported. The Polygon must be valid, wholly inside the requested state, no more than 30 km in bounding radius and no more than 5,000 vertices.
The response filters development and open-school points to the Polygon. Suburb demographics remain suburb-level facts.
7. CSV and GeoJSON exports
CSV for modelling:
curl --get 'https://daleads.com.au/api/v1/childcare/export' \
--header 'Authorization: Bearer YOUR_KEY' \
--data-urlencode 'format=csv' \
--data-urlencode 'state=VIC' \
--output childcare-pipeline.csv
GeoJSON for GIS:
curl --get 'https://daleads.com.au/api/v1/childcare/export' \
--header 'Authorization: Bearer YOUR_KEY' \
--data-urlencode 'format=geojson' \
--data-urlencode 'state=VIC' \
--output childcare-pipeline.geojson
The CSV is protected against spreadsheet formula execution in text fields.
GeoJSON uses EPSG:4326 [longitude, latitude] and includes truncation metadata.
8. Generate a PDF or HTML report
Radius report
curl --get 'https://daleads.com.au/api/v1/childcare/report' \
--header 'Authorization: Bearer YOUR_KEY' \
--data-urlencode 'lat=-37.8136' \
--data-urlencode 'lng=144.9631' \
--data-urlencode 'radius_km=2' \
--data-urlencode 'state=VIC' \
--data-urlencode 'suburb=Melbourne' \
--data-urlencode 'format=pdf' \
--output childcare-market-report.pdf
Polygon report
Use the same catchment-request.json as Polygon site analysis:
curl --request POST \
'https://daleads.com.au/api/v1/childcare/report?format=pdf' \
--header 'Authorization: Bearer YOUR_KEY' \
--header 'Content-Type: application/json' \
--data @catchment-request.json \
--output childcare-market-report.pdf
Use format=html to receive browser-ready HTML instead. A successful PDF
response has Content-Type: application/pdf and a download filename. If the
bounded report renderer is busy, retry a 429 response after the number of
seconds in Retry-After.
Python example:
from pathlib import Path
import requests
response = requests.get(
"https://daleads.com.au/api/v1/childcare/report",
headers={"Authorization": "Bearer YOUR_KEY"},
params={
"lat": -37.8136,
"lng": 144.9631,
"radius_km": 2,
"state": "VIC",
"suburb": "Melbourne",
"format": "pdf",
},
timeout=90,
)
response.raise_for_status()
Path("childcare-market-report.pdf").write_bytes(response.content)
9. Errors and retry behaviour
| Status | Meaning | Action |
|---|---|---|
400 |
Invalid date/location/Polygon or unsupported include_access=true |
Correct the request; do not retry unchanged |
401 |
Missing or invalid key | Check the Authorization header |
403 |
Key inactive/expired, state outside entitlement, or add-on not enabled | Check the assigned licence metadata |
422 |
Missing required parameter or invalid JSON request shape | Supply the required state/location/body fields |
429 |
Daily limit or PDF renderer concurrency limit | Respect Retry-After; do not fan out PDF requests |
503 |
PDF renderer or dependency temporarily unavailable | Retry with backoff; use JSON/CSV while unavailable |
Log response status, endpoint and request correlation in your own system, but never log the Bearer token.
10. Data boundaries
- Council coverage and freshness vary; use the response
coverageblock. - Demand signals are planning inputs, not utilization or financial forecasts.
- ACECQA service, approved-place and NQS data is unavailable pending written
commercial redistribution permission.
available=falsedoes not mean zero local services. - Open-school point coverage currently includes VIC, NSW, QLD, WA, SA and ACT, subject to each publisher's sector coverage. TAS and NT return an explicit coverage gap.
- No ACARA ID, ICSEA, enrolment, teaching staff or ACARA-derived year range is read or delivered.
- Reports and JSON carry the attribution and licence for the sources actually used. Preserve those notices in downstream customer-visible outputs.
11. Suggested evaluation workflow
For a trial, run the supplied reconciliation helper to ingest one complete
snapshot, then compare it with the customer's
existing council, LeadManager and Cordell records using council_reference,
address and lodgement date. Track:
- matched existing records;
- genuinely additional rows;
- false positives and missed childcare synonyms;
- duplicate council references;
- status differences;
- council coverage gaps;
- analyst time saved by stable stages, catchment filtering and ready-made CSV/GeoJSON/PDF outputs.
This comparison is the evidence for a production integration decision; the API does not claim incremental coverage before the customer performs it.
Ready to test a request?
Return to the interactive reference and use your assigned key.