Export a dataset as CSV or NDJSON (Pro and above)
GET /v1/export/{dataset}
The whole dataset — or a jurisdiction / status slice of it — as one file: every licence, every operator, or every domain ↔ operator link we hold. The same records the other endpoints serve; each row carries its own provenance (status_source_url, status_observed_at, last_listed_at), and for KH, TGC and IOM license_number_kind: igregulator_reference says the licence number is our key, not the regulator’s.
Plans. Pro and above. Starter and legacy trial keys get 402 payment_required with details.reason: "export_requires_pro" (Pro isn’t open yet — email founder@igregulator.io). 10 exports per UTC day on Pro, 100 on Business, unlimited on Enterprise — API and dashboard counted together; over it → 429 rate_limited, details.reason: "export_daily_limit_reached". An export counts as one request against the monthly quota, whatever its size. A refused request (4xx) counts against neither.
Formats. csv (default): RFC 4180, UTF-8 without BOM, CRLF line ends, a header row, arrays |-joined, objects as JSON text, null as an empty cell; a text starting with = + - @ gets a leading ' so spreadsheets don’t run it as a formula. json: NDJSON — line 1 is {"_meta": ExportMeta}, then one row object per line, keys in column order, values untouched.
Current state only. as_of is not supported (400 as_of_not_supported); for a past status use ?as_of= on /v1/licenses/{id}, /v1/operators/{slug} or /v1/check. Rows are read in one statement, so the row count and the rows are the same snapshot; compare the lines you received with X-Export-Row-Count to detect a cut-off download.
Row schemas: LicenceExportRow, OperatorExportRow, DomainExportRow. Guide: https://igregulator.io/docs/export/. There is no MCP tool for exports.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”licences (one row per licence), operators (one per legal entity), domains (one per domain ↔ operator link). licenses is accepted for licences.
Query Parameters
Section titled “Query Parameters ”csv or json (NDJSON; ndjson is accepted too).
Comma-separated jurisdiction codes (case-insensitive; repeat the parameter or use commas). licences: the licence’s jurisdiction. operators: holds a licence there. domains: the jurisdiction of the licence the link’s status comes from. An unknown code is a 400.
Example
UKGC,MGAComma-separated licence statuses (active, suspended, revoked, expired, pending, unknown, surrendered, not_in_register). operators: holds a licence with that status — in the jurisdiction given, when both are. domains: the status of the licence the link answers to.
Example
activeResponses
Section titled “ Responses ”The file, streamed. Content-Disposition: attachment; filename="igregulator-<dataset>-<YYYY-MM-DD>.<csv|ndjson>".
Example
license_id,license_number,license_number_kind,jurisdiction_code,…4db0141c-…,039028-R-319297-013,regulator,UKGC,…Line 1: {"_meta": ExportMeta}. Each further line: one LicenceExportRow, OperatorExportRow or DomainExportRow.
Headers
Section titled “Headers ”When the rows were read (ISO-8601 UTC).
Rows in the file (the CSV header / NDJSON _meta line not counted).
Exports per UTC day on your plan (API + dashboard together), or unlimited.
Exports made today, this one included. Omitted when unlimited.
Exports left today. Omitted when unlimited.
Next 00:00 UTC, when the daily counter starts again.
Invalid query / parameters.
object
Human-readable error summary.
HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.
object
Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, export_requires_pro, export_daily_limit_reached, as_of_not_supported, dataset_not_found, internal_error.
Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored."}{ "error": "API key has been revoked", "code": "auth_revoked", "details": { "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored." }}Missing / malformed / revoked API key.
object
Human-readable error summary.
HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.
object
Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, export_requires_pro, export_daily_limit_reached, as_of_not_supported, dataset_not_found, internal_error.
Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored."}{ "error": "API key has been revoked", "code": "auth_revoked", "details": { "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored." }}Export is a Pro feature: Starter and legacy trial keys see the endpoint and get this, never a row. (A canceled or plan-less account gets plan_inactive instead.)
object
Human-readable error summary.
HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.
object
Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, export_requires_pro, export_daily_limit_reached, as_of_not_supported, dataset_not_found, internal_error.
Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored."}Example
{ "error": "CSV/JSON export is a Pro feature", "code": "payment_required", "details": { "reason": "export_requires_pro", "plan_tier": "starter", "required_plan": "pro", "suggestion": "CSV/JSON export is part of Pro. Pro isn't open yet — email founder@igregulator.io to get access or to hear when it opens." }}Headers
Section titled “Headers ”No row matched.
object
Human-readable error summary.
HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.
object
Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, export_requires_pro, export_daily_limit_reached, as_of_not_supported, dataset_not_found, internal_error.
Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored."}{ "error": "API key has been revoked", "code": "auth_revoked", "details": { "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored." }}Today’s exports are used up (export_daily_limit_reached, with Retry-After = seconds to 00:00 UTC), or the monthly quota / per-second limit the key hits everywhere.
object
Human-readable error summary.
HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.
object
Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, export_requires_pro, export_daily_limit_reached, as_of_not_supported, dataset_not_found, internal_error.
Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored."}Example
{ "error": "Daily export limit reached", "code": "rate_limited", "details": { "reason": "export_daily_limit_reached", "current_usage": 10, "limit": 10, "reset_at": "2026-10-01T00:00:00.000Z", "plan_tier": "pro", "suggestion": "Your plan includes 10 exports per UTC day, API and dashboard together; the counter resets at reset_at (00:00 UTC). Need more? Email founder@igregulator.io." }}Headers
Section titled “Headers ”Exports per UTC day on your plan (API + dashboard together), or unlimited.
Exports made today, this one included. Omitted when unlimited.
Exports left today. Omitted when unlimited.
Next 00:00 UTC, when the daily counter starts again.
Unexpected server error.
object
Human-readable error summary.
HTTP-status-level class. Stable enum; branch on details.reason for finer control. Current values: invalid_query, invalid_slug, invalid_license_id, invalid_jurisdiction_code, invalid_pagination, not_found, auth_required, auth_invalid, auth_revoked, payment_required, quota_exceeded, rate_limited, server_error.
object
Machine-readable refinement of the top-level code. Stable vocabulary; branch on this in clients. Examples: invalid_input, missing_required_parameter, conflicting_parameters, operator_not_found, license_not_found, jurisdiction_not_found, route_not_found, api_key_missing, malformed_header, api_key_invalid, api_key_revoked, quota_exceeded, export_requires_pro, export_daily_limit_reached, as_of_not_supported, dataset_not_found, internal_error.
Present only when the error maps to a specific request input field (query param, path param, body key). Omitted for errors that aren’t field-scoped (e.g. rate_limited, auth_revoked).
Optional human-readable / agent-actionable hint describing how to resolve the error.
{ "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored."}{ "error": "API key has been revoked", "code": "auth_revoked", "details": { "reason": "api_key_revoked", "suggestion": "Generate a new API key at https://app.igregulator.io/api-keys. Revoked keys cannot be restored." }}