API
One HTTP API
There is one public HTTP API for every platform: GET /api/v1/search. Filter with PLATFORM: or &platform=. There is no per-network API.
Metered from Pro. Create a bearer key in Settings. The raw key is shown once; we store a hash. Same 64 platform checkboxes as the app — one endpoint, not one client per network.
Endpoint
GET /api/v1/search?q={query}&platform={optional}&sort=newest
Authorization: Bearer fth_live_…
Accept: application/jsonQuery parameters
- q — required. Same operators as the search box: AND OR NOT comma-separated phrases, quoted phrases, FROM: BEFORE: AFTER: LANGUAGE: PLATFORM: HAS: MIN_ENGAGEMENT:
- platform — optional shortcut for PLATFORM:. One of x|linkedin|reddit|bluesky|threads|facebook|instagram|tiktok|mastodon|tumblr|pinterest|snapchat|discord|telegram|truthsocial|gab|nextdoor|youtube|twitch|rumble|vimeo|kick|dailymotion|bitchute|odysee|news|hn|medium|substack|wikipedia|slashdot|lobsters|producthunt|indiehackers|quora|lemmy|github|gitlab|stackoverflow|devto|hashnode|g2|capterra|trustpilot|yelp|playstore|appstore|amazon|glassdoor|weibo|vk|xiaohongshu|kakao|line|wechat|flickr|soundcloud|spotify|goodreads|letterboxd|steam|behance|dribbble|wellfound
- sort — optional. relevance (default), newest, oldest, engagement
Example
curl -s -H "Authorization: Bearer $SCRAPELY_KEY" \
"/api/v1/search?q=openai&platform=hn"
Response shape
{
"query": "openai",
"platform": "hn",
"tookMs": 420,
"total": 20,
"live": true,
"results": [
{
"id": "pst_…",
"platform": "hn",
"handle": "pg",
"content": "…",
"postedAt": "2026-09-05T00:00:00.000Z",
"likes": 12,
"sourceUrl": "https://news.ycombinator.com/item?id=…",
"provider": "hn"
}
]
}Status codes
- 200 — matches. live: true when results were fetched from public sources.
- 400 — missing q
- 401 — missing or revoked key
- 429 — monthly api_requests cap. Body includes used and limit.
What this API is not
- Not a separate client per network. All 64 catalog ids share GET /api/v1/search. Native APIs/RSS where they exist; locked networks (X, LinkedIn, Meta, TikTok, Bluesky without auth) use the public web index.
- Not a complete firehose. Results are whatever public surfaces return for that query right now.
- Not an undocumented /accounts or /monitors REST surface — those live in the signed-in app, not this API.
Create a key in Settings · Setup · FAQ