Global Funding Studio
Home
Developers

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&region=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.

Research support for capital discovery — not legal, tax, credit, investment, or eligibility advice. Material facts should show a source, freshness, and verification state.