Developers
Read-only integrations. No API keys. Fair-use rate limits apply.
Aggregates JSON
GET https://globalfunding.studio
/api/aggregates — query params match the globe: year, month, industry, region, min, optional city (id slug, e.g. san-francisco) to scope JSON to one hub — same as /globe. Optional arcs=0 on /globe / /globe/embed (and the static index.html globe) hides top-hub arcs — not used by this JSON API.
Response includes meta (apiVersion for forward compatibility, dataAsOf, source snapshot | supabase, echoed filters, generatedAt, documentationUrl, filterNotes on how city vs arcs affect the JSON), summary (with byRegion), and cities. CORS: Access-Control-Allow-Origin: *. ~120 requests/minute per IP (HTTP 429 + Retry-After when exceeded).
Successful responses use Cache-Control: public, s-maxage=60, stale-while-revalidate=300 (CDN-friendly; not a guarantee of freshness for underlying manual data).
curl "https://globalfunding.studio /api/aggregates?year=2026&industry=fintech®ion=europe"
Example response shape
Illustrative only; numbers and row counts depend on query and dataset. Defined in lib/aggregates-response-example.ts alongside the API.
{
"meta": {
"apiVersion": "1",
"dataAsOf": "2026-02",
"source": "snapshot",
"filters": {
"year": 2026,
"month": "all",
"industry": "fintech",
"region": "europe",
"min": 0,
"city": null,
"arcs": true
},
"generatedAt": "2026-04-02T12:00:00.000Z",
"documentationUrl": "https://globalfunding.studio/docs",
"filterNotes": [
"Optional query param `city` (id slug) scopes `cities` to that hub when it passes the other filters.",
"Query param `arcs` is accepted for URL parity with `/globe` but does not change aggregate values or the `cities` list."
]
},
"summary": {
"totalFundingBillions": 12.34,
"cityCount": 8,
"topHub": {
"name": "London",
"country": "United Kingdom",
"fundingBillions": 4.56
},
"byRegion": [
{
"region": "europe",
"regionLabel": "Europe",
"fundingBillions": 12.34,
"cityCount": 8
}
]
},
"cities": [
{
"id": "london",
"name": "London",
"country": "United Kingdom",
"region": "europe",
"lat": 51.5074,
"lng": -0.1278,
"fundingBillions": 4.56,
"deals": 1200
}
]
}Platform API (authenticated)
These endpoints require a signed-in user (Supabase auth cookie). Platform-admin endpoints also require a platform role.
POST https://globalfunding.studio
/api/fit/assess — run explainable fit assessment. Body: { "targetType": "investor" | "program", "targetSlug": "...", "profileId": "..." }.
POST https://globalfunding.studio
/api/briefs/generate — generate AI research brief. Body: { "targetType": "investor_firm" | "funding_program", "targetSlug": "...", "profileId": "..." }.
POST https://globalfunding.studio
/api/analytics/events — record analytics event. Body: { "eventType": "...", "payload": {} }.
POST https://globalfunding.studio
/api/admin/ingestion/run — run ingestion for a source. Body: { "sourceId": "...", "adapterType": "csv" | "json_api", "config": { "entityType": "...", "mappings": [...] } } (admin).
POST https://globalfunding.studio
/api/admin/duplicates/find — find duplicate candidates. Body: { "entityType": "investor_firm" | "funding_program" } (admin).
POST https://globalfunding.studio
/api/admin/duplicates/resolve — resolve duplicate. Body: { "id": "...", "action": "approved" | "rejected" | "merged" } (admin).
GET https://globalfunding.studio
/api/export/investors?q=…&format=csv|json — export published investors (max 1,000).
GET https://globalfunding.studio
/api/export/programs?q=…&format=csv|json — export published programs (max 1,000).
GET https://globalfunding.studio
/api/export/target-list/<id>?format=csv|json — export a target list.
POST https://globalfunding.studio
/api/integrations/launching-os/import — import venture profile from Launching OS.
GET https://globalfunding.studio
/api/integrations/launching-os/auth — start Launching OS OAuth flow.
GET https://globalfunding.studio
/api/integrations/launching-os/callback — Launching OS OAuth callback.
GET https://globalfunding.studio
/api/recommendations?profileId=... — get ranked investor/program recommendations for a venture profile.
GET https://globalfunding.studio
/api/search?q=... — full-text search across investors and programs.
GET https://globalfunding.studio
/api/admin/sources/<id>/snapshots — list raw snapshots for a data source (admin).
POST https://globalfunding.studio
/api/alerts/run — trigger alert runner manually (admin).
POST https://globalfunding.studio
/api/cron/ingestion, POST https://globalfunding.studio
/api/cron/alerts, and POST https://globalfunding.studio
/api/cron/jobs — scheduled cron endpoints.
GET https://globalfunding.studio
/api/health — app + Supabase connectivity check.
Rate limits
Read-only aggregate endpoints: ~120 req/min per IP. oEmbed: ~60 req/min. Platform write endpoints (fit, briefs, analytics, admin actions): ~30 req/min. Export endpoints: ~20 req/min. Exceeded requests receive HTTP 429.
oEmbed
GET https://globalfunding.studio
/api/oembed?format=json&url=… — url must be a /globe or /globe/embed link on this site (filters in the query string). Returns oEmbed 1.0 rich JSON with html (iframe + attribution). ~60 requests/minute per IP.
curl "https://globalfunding.studio /api/oembed?format=json&url=https%3A%2F%2Fglobalfunding.studio%0A%2Fglobe%3Fyear%3D2026"
Embed URL
Iframe-friendly view: https://globalfunding.studio
/globe/embed with the same query params as /globe (including city=). Add arcs=0 for a lighter embed without animated arcs between top hubs. Use Embed widget on /globe to copy HTML. Layouts inject JSON-LD WebPage + BreadcrumbList (Home → Globe, or Home → Globe → embed; no on-screen breadcrumbs). Full /globe also emits WebApplication.
City hub pages (SEO)
/cities indexes every tracked ecosystem, grouped by region (breadcrumbs Home → Cities + BreadcrumbList + WebPage JSON-LD). Optional q filters by name, country, region, or slug (e.g. /cities?q=london or /cities?q=europe) and syncs with the filter; use Copy page link for the current URL. This page (/docs) uses breadcrumbs Home → Developers + the same structured data. Each city has a canonical page at /city/<slug> (e.g. /city/san-francisco) with summary stats, breadcrumbs (Home → Cities → hub), up to 15 peer hub links per region (then a link to the filtered city index), JSON-LD Place + WebPage + BreadcrumbList + peers ItemList, and a button into the globe (year + region pre-filled).
Discovery
The full /globe page injects a <link rel="alternate" type="application/json+oembed"> pointing at this site’s oEmbed endpoint for the current URL.