A free REST API over the full catalog. Search and metadata need no key; data downloads use a free key (X-API-Key header, Authorization: Bearer, or ?api_key=).
https://econdl-api.elkassabgi.workers.dev
| Endpoint | What it returns | Key |
|---|---|---|
GET /v1/catalog | Series search. Params: q, source, limit, offset, lang (en/ar/es/fr/ru/zh). | No |
GET /v1/series/{id}.csv | The series as tidy date,value CSV with license + citation header. Params: from, to, raw=1 (bare CSV). | Yes |
GET /v1/series/{id}.metadata.json | Full metadata: title, frequency, geography, unit, license (incl. commercial-use flag), attribution, coverage. | No |
GET /v1/sources | Every source with license and freshness summary. | No |
GET /v1/bundle | Snapshot-pinned bundle manifest (Frictionless datapackage). Params: ids= or source=, snapshot=. | No |
GET /v1/stats | Live store-measured counts (series, observations, as-of date). | No |
GET /v1/last-updates | Per-source freshness board (the data behind Status). | No |
Requests for series from metadata-only sources return HTTP 451 with the publisher's link — see Documentation.
# curl — one series as CSV
curl -H "X-API-Key: $KEY" \
"https://econdl-api.elkassabgi.workers.dev/v1/series/worldbank:NY.GDP.MKTP.CD:USA.csv"
# Python
import io, requests, pandas as pd
r = requests.get("https://econdl-api.elkassabgi.workers.dev/v1/series/worldbank:NY.GDP.MKTP.CD:USA.csv",
headers={"X-API-Key": KEY})
df = pd.read_csv(io.StringIO(r.text), comment="#")
Get a free key on the Download page — one key for the whole ElkassabgiData family.