Launches API
Programmatic access to the Launches feed: every domain captured graduating onto a known platform, one row per domain with optional HTTP enrichment + LLM classification. Query the full feed (launches/feed, scoped by category/platform) or the e-commerce slice (launches/ecommerce).
Conventions
- Base URL:
https://intelligence.flatnine.co/api - Error format:
{"error": "<message>"}with HTTP 4xx/5xx; happy responses are 200. - Pagination:
limit+offsetfor shallow paging; responses carrytotalwhere applicable. The launch feeds also return an opaquenext_cursor- pass it back ascursor=for stable, efficient deep paging (keep filters andsortidentical between pages;nullmeans the last page). - Time: all timestamps are UTC.
- Auth: data endpoints require an API key - send it as
Authorization: Bearer <key>,X-API-Key: <key>, or?api_key=<key>. The map/graph viz endpoints and the health ping are open. Missing/invalid key returns401. - Rate limits: 60 req/min and 600 req/hr per IP (
X-RateLimit-*headers;429+Retry-Afterover the cap).
launches / feed
The full launch feed across every platform category. One row per domain at its first-seen moment, joined to any HTTP enrichment and LLM classification we have. Same row shape as launches/ecommerce, but not locked to commerce platforms - scope it with category= or platform=.
Parameters
category- platform bucket: agentic | ecom | builders | dev | other
platform- restrict to one exact platform (e.g. vercel, shopify, railway)
since_days- recency window on first-seen; 0 = all time, default 7, max 90
country- ISO-3166 alpha-2, matched via the domain ccTLD
tld- exact TLD, e.g. com
min_score- minimum saas_score
business_model- b2b-saas | b2c | api | marketplace | agency-tool | other
stage- pre-launch | live | mature | unclear
ai_role- ai-native | ai-feature | none
categorized- 1 = only domains we have LLM-classified
has_pricing- 1 = only domains with a working /pricing page
has_contact- 1 = only stores we scraped a contact email for
fresh_days- only domains whose WHOIS registration is within N days (1-365)
q- free-text across domain, scraped title/meta, and LLM summary
sort- recent (default) | score | fresh
limit- 1-200, default 50
offset- pagination offset, default 0 (small result sets only - prefer cursor for deep paging)
cursor- opaque keyset cursor from the previous response's next_cursor; stable for deep paging (filters/sort must stay identical). When set, offset is ignored.
Example
curl -s 'https://intelligence.flatnine.co/api?method=launches&endpoint=feed&category=dev&min_score=15&sort=score&limit=20'
Response shape
{"launches": [{"domain": "app.acme.com", "apex": "acme.com", "platform": "railway", "category": "dev", "first_seen": "...", "saas_score": 18, "enrichment": {...}, "classification": {...}}], "total": 1220053, "limit": 20, "offset": 0, "next_cursor": "WyIyMDI2Li4uIiwiYXBwLmFjbWUuY29tIl0=", "category": "dev"}. next_cursor is null on the last page; pass it back as cursor= to get the next page.
launches / ecommerce
Feed of e-commerce launches: every domain that graduated onto a commerce platform (Shopify, Shoplazza, Shopline, Sellfy, BigCommerce, Big Cartel, Nuvemshop, Webador, GoDaddy Commerce), one row per domain at its first-seen moment. Each row is joined to whatever HTTP enrichment (title/meta, WHOIS, pricing-page probe) and LLM classification (summary, vertical, business model, stage, AI role, replicable) we have - both null until the enrich/categorize jobs reach that apex.
Parameters
platform- restrict to one commerce platform (default: all of them)
since_days- recency window on first-seen; 0 = all time, default 7, max 90
country- ISO-3166 alpha-2, matched via the domain ccTLD (e.g. BR, GB)
tld- exact TLD, e.g. com
min_score- minimum saas_score (subdomain/backend/TLD heuristic)
business_model- b2b-saas | b2c | api | marketplace | agency-tool | other
stage- pre-launch | live | mature | unclear
ai_role- ai-native | ai-feature | none
categorized- 1 = only domains we have LLM-classified
has_pricing- 1 = only domains with a working /pricing page (HTTP 2xx/3xx)
has_contact- 1 = only stores we scraped a contact email for (the outreach channel; socials still returned)
fresh_days- only domains whose WHOIS registration is within N days (1-365)
q- free-text across domain, scraped title/meta, and LLM summary
sort- recent (default) | score | fresh
limit- 1-200, default 50
offset- pagination offset, default 0 (small result sets only - prefer cursor for deep paging)
cursor- opaque keyset cursor from the previous response's next_cursor; stable for deep paging (filters/sort must stay identical). When set, offset is ignored.
Example
curl -s 'https://intelligence.flatnine.co/api?method=launches&endpoint=ecommerce&platform=shopify&stage=live&categorized=1&limit=20'
Response shape
{"launches": [{"domain": "www.acme.com", "apex": "acme.com", "apex_url": "https://acme.com/", "platform": "shopify", "category": "ecom", "first_seen": "2026-05-29T20:27:53+00:00", "tld": "com", "country": null, "saas_score": 5, "enrichment": {"title": "...", "meta_desc": "...", "best_source": "apex", "http_status": 200, "contact_emails": ["[email protected]"], "contact_socials": ["https://instagram.com/acme"], "pricing_status": 200, "whois_created_at": "2026-05-20"}, "classification": {"vertical": "ecom", "business_model": "b2c", "stage": "live"}}], "total": 462224, "limit": 20, "offset": 0, "next_cursor": "WyIyMDI2Li4uIiwid3d3LmFjbWUuY29tIl0="}. next_cursor is null on the last page; pass it back as cursor= for the next page (do not decode it - the shape is internal). Note: domain is the captured (sub)domain; apex/apex_url is the registrable main domain (always checked for HTTP 200, with www/subdomain fallback - best_source says which won). enrichment is null until the store has been fetched.
launches / geo
GeoJSON FeatureCollection of launch volume by country, inferred from each domain’s ccTLD and log-scaled. Powers the heatmap on /launches.
Parameters
since_days- 1-90, default 7
Example
curl -s 'https://intelligence.flatnine.co/api?method=launches&endpoint=geo&since_days=7'
Response shape
{"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [-51.9, -10.8]}, "properties": {"country": "BR", "count": 412, "weight": 0.83}}], "count": 42, "mode": "country-points"}