Dubai Setup Index HTTP API API
Dubai Setup Index publishes guides to setting up a company in Dubai and the UAE. These endpoints serve the same facts as data.
Dubai Setup Index publishes guides to setting up a company in Dubai and the UAE. These endpoints serve the same facts as data.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/dubaisetupindex-com:dubai-setup-index-http-api-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
{"openapi":"3.1.0","info":{"title":"Dubai Setup Index HTTP API","version":"1.0.0","summary":"Sourced, dated facts on UAE free zones, the Dubai mainland route and business activities.","license":{"name":"Creative Commons Attribution 4.0 International","identifier":"CC-BY-4.0"},"description":"Dubai Setup Index publishes guides to setting up a company in Dubai and the UAE. These endpoints serve the same facts as data.\n\nFree: no API key and no quota. Every endpoint but one needs no account; the full price matrix JSON (/data/free-zone-prices.json) needs a free signed-in account (`security: session`, 401 without it).\n\nAgents should prefer the MCP server at https://dubaisetupindex.com/api/mcp, which exposes the same records as typed tools plus cost estimators. Its manifest is at https://dubaisetupindex.com/.well-known/mcp.json.\n\nQUOTING: a starting price is not a full setup total. Unknown facts stay unknown — never fill or sum around them. The mainland licence estimate is licence fees only. Every record carries a prebuilt citation; use it.\n\nLICENCE: every dataset here is CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) — every record, the price matrix, the Pro CSV exports and the MCP server. Any use or transformation carries \"Source: Dubai Setup Index (dubaisetupindex.com), licensed CC BY 4.0\" with a link and date (`attribution.attributionText` in every record). A figure sourced from a third party (Invest in Dubai, DET, a free zone authority or a partner's quote) keeps its source citation — the source named in the record, with its URL and checked date — alongside the licence attribution."},"servers":[{"url":"https://dubaisetupindex.com","description":"Production"}],"externalDocs":{"description":"The same surfaces, in prose","url":"https://dubaisetupindex.com/docs/api"},"x-mcp":{"description":"The Model Context Protocol server over the same records, plus cost estimators. Streamable HTTP. Every tool reads, except start_application, which drafts a setup application the user approves on the site, and prepare_quote, which saves a client quote behind a shareable link. Every request is authenticated with OAuth 2.1; dynamic client registration is open, so a client registers itself and a person approves one consent screen.","endpoint":"https://dubaisetupindex.com/api/mcp","manifest":"https://dubaisetupindex.com/.well-known/mcp.json","documentation":"https://dubaisetupindex.com/docs/mcp"},"x-onboarding":{"freeTier":true,"apiKeyRequired":false,"accountRequired":false,"selfServe":true,"rateLimited":false,"notes":"These HTTP endpoints need no credential, except /data/free-zone-prices.json, which needs a free signed-in account. The MCP server needs an OAuth token, obtainable end to end by a client through dynamic registration plus one human consent."},"paths":{"/{page}":{"get":{"operationId":"getPageAsMarkdown","summary":"Any page as markdown","description":"Every content page answers in markdown at its own canonical URL when the request prefers `text/markdown`. Same sections, figures and caveats as the HTML, plus a citation footer. Use this to read a page; use the JSON records to compute with one.","parameters":[{"name":"page","in":"path","required":true,"description":"Any page path from /sitemap.xml, e.g. `free-zones/ifza`.","schema":{"type":"string"}},{"name":"Accept","in":"header","required":true,"description":"`text/markdown`. A header that accepts neither HTML nor markdown answers 406.","schema":{"type":"string","enum":["text/markdown"]}}],"responses":{"200":{"description":"Any page as markdown","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"No such page or record."},"406":{"description":"The Accept header admits neither text/html nor text/markdown."}}}},"/md/{page}":{"get":{"operationId":"getMarkdownMirror","summary":"Any page as markdown, at its own URL","description":"The same markdown, addressable without an Accept header. Marked noindex; cite the canonical page URL, not this one.","parameters":[{"name":"page","in":"path","required":true,"description":"A page path from /sitemap.xml.","schema":{"type":"string"}}],"responses":{"200":{"description":"Any page as markdown, at its own URL","content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"No such page or record."}}}},"/data/free-zones.json":{"get":{"operationId":"listFreeZones","summary":"Every UAE free zone, one summary row each","description":"Name, emirate, regulator, the no-visa starting price and the lowest published price for each zone, with a link to its full record. Start here to shortlist. The record is the same object the page at `url` renders: unknown facts keep `{ \"kind\": \"unknown\", \"detail\" }` and are never filled in. Quote with `attribution.citation`.","parameters":[],"responses":{"200":{"description":"Every UAE free zone, one summary row each","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Record"}}}}}}},"/data/free-zone-prices.json":{"get":{"operationId":"getFreeZonePriceMatrix","summary":"Every free zone's starting price at 0–3 visas (signed-in accounts)","description":"The dated price matrix behind /free-zones/prices: one row per zone, one cell per visa count (0–3), each figure labelled `basis` (package, calculator, licence-only, single-fee) with its source and checked date. An unknown cell is `{ status: \"unknown\", detail }`, never zero; `otherFigures` are published but not like-for-like, carry `notLikeForLike` reasons and must not be ranked. Not public: it needs a signed-in account (free) — the site's session cookie, from https://dubaisetupindex.com/sign-in?next=%2Fdata%2Ffree-zone-prices.json. Without it the answer is 401 (a browser is redirected to sign-in). The same rows are public as the page and its markdown, and as the MCP resource dsi://free-zone-prices for a connected account. Licensed CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/): `license` names it, and any use or transformation must carry `attribution.attributionText` (\"Source: Dubai Setup Index (dubaisetupindex.com), licensed CC BY 4.0\", with link and date). Quote a single figure with `attribution.citation`.","parameters":[],"responses":{"200":{"description":"Every free zone's starting price at 0–3 visas (signed-in accounts)","content":{"application/json":{"schema":{"type":"object","required":["rows","license","attribution"],"properties":{"license":{"type":"object","required":["name","url"],"properties":{"name":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"terms":{"type":"string"}}},"attribution":{"$ref":"#/components/schemas/Attribution"}},"additionalProperties":true}}}},"401":{"description":"No signed-in session. Sign in at /sign-in (a free account), then request again. Answered as a Problem document."}},"security":[{"session":[]}]}},"/data/free-zones/{file}":{"get":{"operationId":"getFreeZone","summary":"One free zone","description":"Packages and prices by visa count and term, setup steps and timing, documents, licence and facility types, visa options, renewal, nationality rules, sources and known gaps. The record is the same object the page at `url` renders: unknown facts keep `{ \"kind\": \"unknown\", \"detail\" }` and are never filled in. Quote with `attribution.citation`.","parameters":[{"name":"file","in":"path","required":true,"description":"The free zone slug followed by `.json`, e.g. the last segment of its page URL plus `.json`. Slugs are listed in /sitemap.xml.","schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]*\\.json$"}}],"responses":{"200":{"description":"One free zone","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Record"}}}},"404":{"description":"No such page or record."}}}},"/data/mainland.json":{"get":{"operationId":"getMainland","summary":"The Dubai mainland (DET) route","description":"The official Invest in Dubai licence estimate examples and activity scopes, the preparation process and the editorial guide. The licence estimate is licence fees only, never a full setup total. The record is the same object the page at `url` renders: unknown facts keep `{ \"kind\": \"unknown\", \"detail\" }` and are never filled in. Quote with `attribution.citation`.","parameters":[],"responses":{"200":{"description":"The Dubai mainland (DET) route","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Record"}}}}}}},"/data/activities/{file}":{"get":{"operationId":"getActivity","summary":"One business activity","description":"Which setup lanes (IFZA, Ajman Free Zone, Dubai mainland) list the activity, with codes, facility and approval requirements, documents and regulation level; and where else it is catalogued. The record is the same object the page at `url` renders: unknown facts keep `{ \"kind\": \"unknown\", \"detail\" }` and are never filled in. Quote with `attribution.citation`.","parameters":[{"name":"file","in":"path","required":true,"description":"The activity slug followed by `.json`, e.g. the last segment of its page URL plus `.json`. Slugs are listed in /sitemap.xml.","schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]*\\.json$"}}],"responses":{"200":{"description":"One business activity","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Record"}}}},"404":{"description":"No such page or record."}}}},"/activities/search-index.json":{"get":{"operationId":"searchActivities","summary":"The activity search index","description":"Every activity with its name, lanes and facets, for matching a business description to activity slugs. Fetch the full record for anything you will quote.","parameters":[],"responses":{"200":{"description":"The activity search index","content":{"application/json":{"schema":{"type":"object"}}}}}}},"/data/comparisons/{file}":{"get":{"operationId":"getComparison","summary":"A side-by-side route comparison","description":"Rows of facts (prices by visa count, timelines, renewal, licence and facility types) with one cell per subject, in subject order. The record is the same object the page at `url` renders: unknown facts keep `{ \"kind\": \"unknown\", \"detail\" }` and are never filled in. Quote with `attribution.citation`.","parameters":[{"name":"file","in":"path","required":true,"description":"The comparison slug followed by `.json`, e.g. the last segment of its page URL plus `.json`. Slugs are listed in /sitemap.xml.","schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]*\\.json$"}}],"responses":{"200":{"description":"A side-by-side route comparison","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Record"}}}},"404":{"description":"No such page or record."}}}},"/data/guides/{file}":{"get":{"operationId":"getTopicGuide","summary":"Sourced setup and compliance guidance","description":"Scoped requirements, unresolved questions and official sources, with the review date. The record is the same object the page at `url` renders: unknown facts keep `{ \"kind\": \"unknown\", \"detail\" }` and are never filled in. Quote with `attribution.citation`.","parameters":[{"name":"file","in":"path","required":true,"description":"The guide slug followed by `.json`, e.g. the last segment of its page URL plus `.json`. Slugs are listed in /sitemap.xml.","schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]*\\.json$"}}],"responses":{"200":{"description":"Sourced setup and compliance guidance","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Record"}}}},"404":{"description":"No such page or record."}}}},"/data/countries/{file}":{"get":{"operationId":"getCountryGuide","summary":"Setup notes for founders from one country","description":"Common motivations, documents to prepare and travel notes for founders from that country. The record is the same object the page at `url` renders: unknown facts keep `{ \"kind\": \"unknown\", \"detail\" }` and are never filled in. Quote with `attribution.citation`.","parameters":[{"name":"file","in":"path","required":true,"description":"The country slug followed by `.json`, e.g. the last segment of its page URL plus `.json`. Slugs are listed in /sitemap.xml.","schema":{"type":"string","pattern":"^[a-z0-9][a-z0-9-]*\\.json$"}}],"responses":{"200":{"description":"Setup notes for founders from one country","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Record"}}}},"404":{"description":"No such page or record."}}}},"/llms.txt":{"get":{"operationId":"getLlmsTxt","summary":"What this site covers and how to use it","description":"The agent index: coverage, when to use and not use this site, every surface and the quoting rules.","parameters":[],"responses":{"200":{"description":"What this site covers and how to use it","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/skill.md":{"get":{"operationId":"getSkill","summary":"The agent skill","description":"When to reach for this site, how to call it and how to quote from it, as a skill file with front matter.","parameters":[],"responses":{"200":{"description":"The agent skill","content":{"text/markdown":{"schema":{"type":"string"}}}}}}}},"components":{"securitySchemes":{"session":{"type":"apiKey","in":"cookie","name":"__Secure-better-auth.session_token","description":"The session cookie a browser holds after signing in at https://dubaisetupindex.com/sign-in (a free account). Only /data/free-zone-prices.json needs it."}},"schemas":{"Record":{"title":"Record","type":"object","required":["id","type","title","url","data","attribution"],"properties":{"id":{"type":"string"},"type":{"type":"string","enum":["free-zone","mainland","activity","comparison","country"]},"title":{"type":"string"},"url":{"type":"string","format":"uri","description":"The canonical page. Cite this."},"updatedOn":{"type":["string","null"],"format":"date"},"publish":{"type":["object","null"],"description":"`status: noindex` marks a page below the publication gate, with the reasons."},"links":{"type":"object","properties":{"html":{"type":"string","format":"uri"},"markdown":{"type":"string","format":"uri"},"json":{"type":"string","format":"uri"}}},"data":{"type":"object","description":"The page's facts. Facts are `FactCell`s."},"attribution":{"$ref":"#/components/schemas/Attribution"}}},"FactCell":{"title":"FactCell","description":"One fact. Either known (`money`, `duration`, `count`, `text`, `boolean`, with a `value`) or `unknown` with a `detail` saying what was checked. An unknown is not a zero and must not be estimated.","type":"object","required":["kind"],"properties":{"kind":{"type":"string","enum":["money","duration","count","text","boolean","unknown"]},"value":{},"note":{"type":"string"},"detail":{"type":"string"}},"additionalProperties":true},"Attribution":{"title":"Attribution","description":"A prebuilt citation and the CC BY 4.0 attribution. Copy `citation` or `citationMarkdown` verbatim rather than composing your own; the link is the part that must survive. Carry `attributionText` on any use or transformation of the data.","type":"object","required":["citation","url","license","attributionText"],"properties":{"required":{"type":"boolean"},"publisher":{"type":"string"},"url":{"type":"string","format":"uri"},"license":{"type":"string","format":"uri","description":"The licence of every record: https://creativecommons.org/licenses/by/4.0/."},"licenseName":{"type":"string","description":"CC BY 4.0"},"terms":{"type":"string","format":"uri","description":"The reuse terms, for people."},"attributionText":{"type":"string","description":"\"Source: Dubai Setup Index (dubaisetupindex.com), licensed CC BY 4.0\", with link and date. Required on any use or transformation. A figure sourced from a third party (Invest in Dubai, DET, a free zone authority or a partner's quote) keeps its source citation — the source named in the record, with its URL and checked date — alongside the licence attribution."},"attributionMarkdown":{"type":"string"},"citation":{"type":"string"},"citationMarkdown":{"type":"string"},"note":{"type":"string"}}},"Problem":{"title":"Problem","description":"RFC 9457 problem details.","type":"object","required":["type","title","status","code","hint"],"properties":{"type":{"type":"string","format":"uri","const":"https://dubaisetupindex.com/docs/api#errors"},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"code":{"type":"string"},"hint":{"type":"string"}}}}}}