Changelog

New endpoints, platforms, integrations, and fixes — everything we ship, dated and documented.

NewImprovedFixedIntegrationsPlatforms
Platforms

Twitter/X Search shelved — X ended guest search access

GET /v1/twitter/search is shelved. Around 2026-08-01, X stopped serving search results to guest sessions: every query now returns an empty timeline envelope from X itself (last successful scrape 2026-07-31), so there is no honest data to return. The endpoint answers 410 Gone at 0 credits instead of a failing scrape, and comes back when a replacement source ships. All other Twitter/X endpoints — profile, user-tweets, tweet-details, transcript, community, community-tweets — are unaffected.

  • GET /v1/twitter/search → 410 Gone (0 credits) until a replacement source ships
  • Removed from docs, playground, and the MCP / CLI / n8n / Zapier / Make / Apify tool catalogs
  • Profile, user-tweets, tweet-details, transcript, and community endpoints unchanged
Fixed

Google advertiser-search → company-ads chain (Nike Inc., not SRL)

advertiser-search no longer returns a single Italian NIKE SRL for q=nike&country=US. Brand queries are expanded (Nike, Inc. + siblings), ranked with country preference (US prefers Inc. over SRL/BV), and return multiple AR entities so you can pick. company-ads adds resolvedAdvertiser {id,name,url}, sort=last_shown|first_shown, and stable null keys for text/headline/cta/landingUrl/spend. Chain: search -> advertisers[0].id -> company-ads?advertiser=AR...

  • advertiser-search: expand + rank multi-result (Nike, Inc. first for US)
  • company-ads: resolvedAdvertiser + sort + stable null schema
  • Docs/examples use AR167 Nike, Inc. for the creatives chain
Improved

Ad libraries: advertiser unify, FB cursor/platforms, TikTok relevance + 2 credits

Facebook Ad Library search collapses the same page id to one advertiser name (no Facebook vs Facebook App split), adds platforms filter + nextCursor paging through the HTML batch, and documents status/date/media filters for live campaigns. TikTok Ad Library search relevance-filters so query tokens must appear in advertiser/copy (empty beats spam), keeps FB-parity null keys for headline/cta/landingUrl/spend/advertiser.id, ISO firstShown dates, and bills flat 2 credits native (Apify capped at 5 - never the old ~70 trap). DSA still withholds Meta-style spend; use Creative Center Top Ads for CTR/brand ranking.

  • FB: same advertiser id -> one canonical name/url/logo per response
  • FB: platforms + cursor/nextCursor; status/date/media already wired
  • TT: relevance filter + stable null schema + ISO dates
  • TT pricing: 2 native / 5 Apify cap (documented vs old ~70)
Fixed

Analytics showcase: full YouTube metrics, failed[], engagementRateBasis

Post analytics no longer ships views-only YouTube rows when watch-page enrich is thin - incomplete native responses fall through to Apify so likes, comments, publishedAt, and @handle populate on the vitrin example. author.username never echoes the display name. metrics.engagementRateBasis is always interactions/views on post/compare (do not compare to popular-creators). Compare adds status, failedCount, and failed[] so partial batches are auditable; publishedAt normalizes to UTC Z; docs never fall back to example.com lorem.

  • YouTube thin native -> Apify when likes/comments/handle/date missing
  • username = @handle only; displayName stays separate
  • engagementRateBasis=interactions/views on every post metrics object
  • compare: status + failed[] + failedCount; real docs example fallback
Improved

LinkedIn profile: experience/education/similarProfiles + restricted masking

LinkedIn /profile no longer short-circuits on a thin native shell — when HTML omits experience/education it enriches from Apify (detail, then full-sections) so B2B core fields actually arrive. Additive sections: experience[], education[], similarProfiles[], projects, publications, articles, activity, recommendations, certifications, languages. Guest-masked asterisk copy is returned as description:null with restricted:true instead of star spam. connections remaining null is documented as a LinkedIn logged-out platform limit.

  • Native->Apify enrich when experience/education missing
  • similarProfiles[] + richer section pass-through
  • Masked ******* -> null + restricted:true
  • connections null = LinkedIn guest limit (not a bug)
New

Creator trust layer: createTime, verification triad, tipjar contact{}, cacheMaxAge

Account trust signals that make Creator Verification / Partnership Qualification real. TikTok channel-details and popular-creators now expose createTime / createTimeUnix (account age), bioLink{link,risk}, ttSeller, commerce/organization flags, and contact{}. Twitter/X profile keeps blue / legacy / identity verification as separate bits (isBlueVerified != isLegacyVerified != isIdentityVerified), plus fastFollowers/normalFollowers, tipjarSettings -> contact{emails,paymentHandles,links}, and expanded bioUrls. New cacheMaxAge=1d|3d|7d|14d|30d on key profile endpoints; JSON envelope already includes cached + cachedAt on hits.

  • TikTok: createTime + bioLink.risk + ttSeller on channel-details / popular-creators
  • Twitter: isLegacyVerified + tipjar contact{} + fastFollowers
  • cacheMaxAge 1d-30d on TikTok/Twitter/Instagram profile endpoints
  • Envelope cached + cachedAt (not header-only)
Improved

trending-feed: Creative Center orderBy/period/countryCode + Instagram profile pass-throughs

trending-feed stays the rich For You feed by default, and now accepts SC-style filters — orderBy (hot|like|comment|repost), period (7|30|120), countryCode, and page — to read TikTok Creative Center popular videos (same chart as videos/popular) with pagination.totalCount (~500) while still hydrating engagement/author when possible. Instagram basic-profile / channel-details / profile-search now surface categoryName, fbid, relatedProfiles[] (edge_related_profiles), businessAddress, and likeAndViewCountsDisabled from the existing web_profile_info payload — no new scrape, niche discovery + IG↔FB join without a creator-search endpoint.

  • trending-feed: orderBy / period / countryCode / page + pagination.totalCount
  • Instagram profiles: relatedProfiles[] + likeAndViewCountsDisabled
  • categoryName + fbid + businessAddress parity across profile endpoints
  • Post mappers: likeAndViewCountsDisabled (0 ≠ hidden likes)
Improved

YouTube search: viewCountText/Int + lives/shelves arrays

YouTube search already returned typed results and filters (type, sortBy, uploadDate, duration, region). Each hit now also exposes viewCountText (e.g. 750K) plus viewCountInt (750000) so compact UI labels stay honest. Response adds lives[] / shelves[], and continuationToken as an alias of nextCursor. Docs note: duration filters apply to long-form videos, not Shorts.

  • viewCountText + viewCountInt on search hits
  • lives[] / shelves[] partitioned arrays
  • continuationToken alias for nextCursor
Improved

Instagram Reels: views != plays, location{}, Highlights, commercial flags

engagement.views is video_view_count (reach-style) when Instagram exposes it; engagement.plays is total play count including replays — the gap can be ~2x. viewsInstagram remains Instagram-only plays (excludes Facebook cross-post); viewsFacebook is the FB share. location{} now includes slug, hasPublicPage, addressJson / address{}. New GET /v1/instagram/highlights and /highlights-details for persistent Story Highlight albums (not live Stories). isAd / isAffiliate / isPaidPartnership and previewComments.authorId are filled on feed and search paths when Instagram exposes them.

  • views vs plays vs viewsInstagram / viewsFacebook documented and emitted
  • location{id,name,slug,address…} on post/reel mappers
  • GET /highlights + /highlights-details (flat 1 credit each)
  • isAd / isAffiliate / isPaidPartnership on enriched search/feed rows
New

TikTok Creative Center: popular-hashtags, popular-creators, popular-songs

popular-hashtags and popular-creators now read TikTok Creative Center charts (ads.tiktok.com/business/creativecenter) instead of sample co-occurrence / invented formulas — so videoCount is a real population total (not "17 from a 20-video sample") and engagementRate is TikTok's official interact rate when exposed. New GET /v1/tiktok/popular-songs adds popular|surging sounds with rankDiff, trend[] time series, and commercialMusic / ifCml for brand-safe audio. Flat 2 credits on the Creative Center path. Optional query= on popular-hashtags still runs the legacy related-tag co-occurrence enrich.

  • popular-hashtags: Creative Center chart + rankDiff + trend[] (flat 2 credits)
  • popular-creators: Creative Center first, then FYP / Apify fallthrough
  • New popular-songs: rankType, commercialMusic, trend[], rankDiff
  • country / period (7|30|120) / page / newOnBoard filters
Improved

Account APIs: camelCase field names

GET /v1/account/balance (and sibling usage/history/daily-usage/most-used-routes/limits) now use camelCase keys — monthlyQuota, subscriptionCredits, topupCredits, totalCredits, subscriptionRenewsAt, creditsUsed, createdAt, etc. — matching the rest of the Captapi surface. Same data; naming only.

  • balance: monthlyQuota, subscriptionCredits, topupCredits, totalCredits, subscriptionRenewsAt
  • usage/history/routes: creditsUsed, cacheHit, statusCode, createdAt, …
Improved

Truth Social profile: bot/isPrivate flags, static media, 1 credit

GET /v1/truth-social/profile drops from 5 → 1 credit and adds bot, isPrivate (locked), group, discoverable, location, avatarStatic/headerStatic, emojis[], plus acceptingMessages/chatsOnboarded/tvAccount when present. Bio stays HTML-stripped. Docs warn that as of late 2025 Truth Social typically only exposes public profiles for prominent accounts without login — auth-gated accounts return a clear 404. Native lookup retries via Decodo when datacenter IPs hit Cloudflare.

  • 1 credit (was 5)
  • bot, isPrivate, group, location, avatarStatic/headerStatic, emojis
  • Docs + 404 copy for auth-gated / non-prominent accounts
Improved

Amazon seller storefront: badges, scrapedAt, pagination; drop raw leak

GET /v1/amazon-shop/page now returns seller name, scrapedAt, stable product shapes (price/currency/priceFormatted always present), isPrime/isBestSeller/isSponsored, canonical /dp/{ASIN} URLs, display priceFormatted ($1,234.56), and cursor pagination (nextCursor/hasMore). Removes rawFirstItem leakage. Docs clarify scope: seller storefronts (/sp?seller=), not influencer /shop/<handle> vitrines. Influencer shop URLs return 400 with a clear message. List price aligned to 1 credit per ~16-product page.

  • scrapedAt + isPrime/isBestSeller/isSponsored on products
  • seller.name, canonical /dp URLs, stable price fields, cursor pagination
  • Removed rawFirstItem; scope note vs influencer /shop/
Improved

Linktree page: email, GROUP children, verticals, 1 credit

GET /v1/linktree/page drops from 4 → 1 credit. Returns email when the creator publishes a mailto social, plus verticals and linkPlatforms. GROUP folders now nest child links under links[] (parentId on nested rows); typed links (SPOTIFY_*, SOUNDCLOUD_*, …) kept. socialAccounts includes soundcloud; socials remains the icon list. Browser-like fetch headers avoid Linktree 403s on datacenter UAs.

  • 1 credit (was 4)
  • email + verticals + linkPlatforms
  • GROUP.links nesting + parentId; soundcloud in socialAccounts
New

GitHub user: email + parity fields, 1 credit, free-API note

GitHub user drops from 3 credits to 1 (matching ScrapeCreators) and adds email (when public), nodeId, apiUrl, hireable, and siteAdmin. type is now user or organization. Docs note that this wraps GitHub's free public REST API — use Captapi for one-key workflows; call api.github.com directly for GitHub-only jobs.

  • Price: 3 → 1 credit
  • Additive email, nodeId, apiUrl, hireable, siteAdmin
  • Honesty note: free GitHub API alternative for GitHub-only workloads
Fixed

Compare analytics: real unified metrics example + cache param

Compare analytics docs no longer show placeholder example.com rows. The live example returns count/resolved/results[] with the same metrics object as post analytics (views, likes, comments, engagementRate, …). Adds cache=true (per-URL cache shared with /post; hits free) and honest billing copy — 1 credit per resolved URL, no bulk discount.

  • Live snapshot example with two real YouTube URLs and full metrics{}
  • Additive cache param (shared with /v1/analytics/post)
  • Docs/FAQ: same shape as post analytics; no bulk credit discount
New

Pinterest pin-details: title, link, createdAt, originAuthor, images

Pinterest pin-details keeps board{}, author{}, image, and saves, and adds the fields needed for commerce and creator intel: title/description/seoAltText, link/destinationUrl, ISO createdAt, originAuthor vs author (pinner), repinCount/shareCount/reactionCount, and images{} including originals.

  • Additive title, description, seoAltText, link/destinationUrl, domain
  • Additive createdAt/publishedAt (ISO-8601 from pin page)
  • Additive originAuthor + images{236x,564x,originals} + repin/share/reaction counts
Fixed

Post analytics: YouTube likes, comments, publishedAt, engagementRate

Cross-platform post analytics now uses the same enriched YouTube path as video-details, so likes, comments, publishedAt, and engagementRate populate instead of staying null when views alone were present. author.username prefers the channel handle; shares/saves remain null on YouTube (not publicly exposed).

  • YouTube analytics reuses enriched video-details (likes/comments/publishedAt)
  • author.username ← channelHandle when available; displayName stays channel name
  • Docs/FAQ: same metrics shape; platform-missing fields stay null
New

Google company-ads: cursor paging, date filters, adsCountEstimate

Google Ads Transparency company-ads keeps the 2-credit media[] response, and adds cursor pagination (nextCursor/hasMore), adsCountEstimate, region alias, and start_date/end_date overlap filters. Docs note public commercial creatives only — login-gated and political ads are out of scope.

  • Additive hasMore / nextCursor / adsCountEstimate
  • New params: cursor, region, start_date, end_date (topic=all only)
  • Honesty note: public ATC creatives only; shapes can vary
New

Richer Facebook details: author id, SD/HD, captions, music (non-breaking)

Facebook details keeps every existing field (videoUrl, author.username, engagement), and adds stable author.id, feedbackId, captionsUrl, videoSdUrl/videoHdUrl, video dimensions, nested video{}, and music when Facebook exposes them. Docs note that some Reel view counts on the post page can lag the public Reels grid badge.

  • Additive author.id + feedbackId
  • Additive captionsUrl, videoSdUrl/videoHdUrl, videoWidth/videoHeight, video{}, music{}
  • Docs warning for Reel view-count badge mismatch vs profile Reels grid
New

YouTube channel-details: email + SEO tags (non-breaking)

YouTube channel-details keeps every existing numeric/stats field, and adds email (from About/description when publicly exposed) and tags[] from channel SEO keywords. CAPTCHA-gated business emails stay null.

  • Additive email when present in channel About/description or mailto links
  • Additive tags[] from channelMetadataRenderer keywords (list, not a comma string)
  • Existing subscriberCount/videoCount/viewCount numbers, handle, verified, links unchanged
New

Richer TikTok Shop product-details (non-breaking)

TikTok Shop product-details keeps price as a float + currency, and now returns seller id/url, originalPrice/discount, description, skus[], and optional region for the Apify path. Related affiliate videos remain best-effort when upstream provides them.

  • seller.id / seller.url restored (were stripped in details mode)
  • originalPrice, discount, description, skus[], images[], region param
  • Native path still bills 2 credits; Apify fallback remains 14
Fixed

Reddit comments: real ISO publishedAt + post context

Reddit post-comments publishedAt is now ISO 8601 (was a stringified unix float like 1785330725.0, which broke Date parsers). Existing flat comments + depth/parentId stay; response adds post, score/downs, authorFullname, and hasMore.

  • publishedAt is ISO 8601 UTC
  • Additive score, downs, authorFullname, distinguished, controversiality
  • post object + hasMore/nextCursor (cursor paging still deferred)
Fixed

LinkedIn profile: stop treating SEO meta as About

LinkedIn profile no longer copies og:description into about, and no longer invents connections/currentCompany from that SEO trailer (the Bill Gates 8 connections bug). about prefers JSON-LD Person description and is omitted when only SEO meta is available; connections matching the privacy/SEO placeholder are null.

  • about from JSON-LD only - SEO meta never returned as about
  • connections matching SEO N connections on LinkedIn chrome -> null
  • Additive experience[] / education[] when the Apify fallback returns them
New

Facebook Ad Library search: filters + richer ads (non-breaking)

Facebook Ad Library search keeps every existing ad field your integrations already parse (including media[] and string spend/impressions), and adds the filters and structured fields needed for competitor intel. Default status is ACTIVE so results match what advertisers are running now.

  • New filters: status, media_type, ad_type, search_type, sort_by, start_date, end_date (max limit 200 documented)
  • Additive ad fields: isActive, publisherPlatforms, cards[], images[], videos[], spendRange/impressionsRange, pageLikeCount, disclaimer/byline, fetchedAt
  • searchResultsCount / hasMore / nextCursor on the response (cursor paging deferred); docs note spend/impressions are usually political/issue-only
Improved

YouTube comments: author channel ID, publishedTime, heart fix

YouTube comments responses now include authorChannelId and publishedTime (ISO when InnerTube provides it) alongside the existing author string and publishedTimeText. hasCreatorHeart no longer false-positives on inactive heart tooltips. Billing stays a flat 2 credits per call.

  • authorChannelId for stable commenter joins
  • publishedTime ISO when available; publishedTimeText unchanged
  • hasCreatorHeart only true when the creator actually hearted the comment
New

Richer Instagram channel-details (non-breaking)

Instagram channel-details keeps every existing field your integrations already parse, and adds the IDs and account flags needed for joins, outreach, and private-account detection. externalUrl and profileImage are unchanged; bioLinks and profileImageHd are additive.

  • New id and fbid for stable Instagram user identity
  • isPrivate, isBusinessAccount, isProfessionalAccount, categoryName
  • bioLinks[], profileImageHd, businessAddress when present, plus fetchedAt
Improved

Transcript source in the JSON body (non-breaking)

YouTube and TikTok transcript responses now include source in the body so RAG and analytics can weight caption quality vs Whisper. Existing transcript, transcriptSegments, wordCount, segments, and language fields are unchanged. YouTube also adds isAutoGenerated, isTranslated, and availableLanguages when captions are used.

  • source: "captions" | "whisper" (TikTok) | "fallback" (YouTube secondary path)
  • YouTube: isAutoGenerated, isTranslated, availableLanguages[]
  • No rename of segment fields; float seconds and ISO language codes unchanged
New

Richer TikTok channel-details (non-breaking)

TikTok channel-details keeps every existing field your integrations already parse, and adds stable IDs, account age, commerce/seller flags, and bio-link risk for vetting and joins. category, private, and exact follower counts are unchanged.

  • New id and secUid for stable TikTok identity and chaining
  • createTime, uniqueIdModifyTime, nickNameModifyTime for account-age and takeover signals
  • isCommerceUser, isSeller, isOrganization, isAdVirtual, bioLinkRisk, friendCount/diggCount, avatar sizes, privacy settings, fetchedAt
Platforms

Dashboard Tools page removed

The in-dashboard free Tools section is gone so the product stays clearly API-first. Public free tools at /tools are unchanged. Bookmarked /dashboard/tools links redirect to the API Playground.

  • Removed Tools from the dashboard sidebar
  • /dashboard/tools -> /dashboard/playground
  • Marketing free tools at /tools remain available
Improved

Billing metadata in every successful JSON response

Successful API responses now include cached, creditsUsed, requestId, fetchedAt, and cachedAt in the JSON body (in addition to the existing x-captapi-* headers). Use fetchedAt for time-series snapshots and requestId when contacting support.

  • Body fields: cached, creditsUsed, requestId, fetchedAt, cachedAt
  • New response header: x-captapi-request-id
  • cachedAt is set when the response was served from cache; otherwise null
New

Richer YouTube and TikTok video-details responses

YouTube and TikTok video-details now return the fields teams need for joins, media pipelines, and filtering — without dumping a raw platform blob. Existing keys are unchanged; new fields are additive.

  • YouTube: channelHandle, contentType/isShort, liveStatus, availableCaptions[], thumbnails[], descriptionLinks[], language and access flags, fetchedAt
  • TikTok: authorId/secUid, musicId/musicAuthor/isOriginalSound, mediaType, videoUrl/downloadUrl/downloadUrlNoWatermark, mentions[], status flags, isAd/isCommerce, region/width/height, mediaUrlsExpireAt, fetchedAt
  • TikTok engagement.isApproximate marks rounded legacy counters vs exact statsV2 counts
Improved

Cheaper pricing on native list and search endpoints

Native-only list and search endpoints now bill a flat 2 credits per call instead of scaling per result. This covers YouTube comments, comment replies, channel videos, search, and channel playlists; TikTok top search and trending feed; Instagram hashtag search; Twitter/X user tweets and search; and Reddit subreddit posts, comments, transcript, search, and subreddit search. Apify-backed endpoints are unchanged.

  • YouTube comments, replies, channel videos, search, and playlists -> flat 2 credits
  • TikTok top search and trending feed -> flat 2 credits
  • Instagram hashtag search -> flat 2 credits
  • Twitter/X user tweets and search -> flat 2 credits
  • Reddit list, comments, transcript, and search endpoints -> flat 2 credits
Improved

Instagram Music Posts API retired

The Instagram Music Posts API has been removed - it was a duplicate of the Instagram Reels By Audio ID API (same scraper, same data) at a higher price. Use Reels By Audio ID instead; it accepts both audio IDs and full audio page URLs.

  • GET /v1/instagram/music-posts no longer exists (returns 404)
  • Migrate to GET /v1/instagram/reels-by-audio-id - pass your audio page URL or the numeric audio ID as audio_id
  • Old docs links redirect to the Reels By Audio ID page automatically
Improved

cache=false parameter on every endpoint

Every data endpoint now accepts an optional cache=false query parameter to bypass the cache and always fetch fresh data. Previously only transcript, summarizer, and Spotify endpoints supported it.

  • Add cache=false to any request when you need live numbers instead of the cached copy (fresh calls are billed as usual; the result still refreshes the cache)
  • Documented on all 179 API pages and available in the playground, MCP server, SDKs, CLI, and n8n node
  • Account endpoints (balance, usage) are always live and unaffected
New

Report a bug from any API page

A Report a bug button on every API docs page and in the dashboard lets you flag a wrong response, an error, or something slow in a couple of clicks.

  • Modal form with an endpoint picker (prefilled on API pages), a description field, and an optional email for logged-out users
  • Reports are linked to your account automatically when you're signed in — no need to type your details
  • Sits next to "Try it" on each API page and in the dashboard sidebar
New

Optional cache bypass with ?cache=false

Endpoints with a 24-hour cache (transcripts, AI summaries, and Spotify catalog details) now accept an optional cache query parameter. It defaults to true, so existing behaviour is unchanged.

  • Pass cache=false to skip the cache and always fetch fresh data; the fresh result still refreshes the shared cache
  • Bypassed calls bill normal credits, cached calls remain free
  • Available on YouTube/Shorts, TikTok, Instagram, Facebook and Twitter/X transcript & summarize endpoints, plus Spotify artist/track/album/podcast
  • Documented on every endpoint page and exposed in the MCP, CLI and n8n catalogs
Improved

More Instagram URL formats accepted

Instagram post endpoints accept every permalink shape Instagram generates.

  • Plural /reels/CODE/ links (as copied from the Reels feed) now work
  • Profile-scoped links like instagram.com/username/reel/CODE/ now work
New

language parameter on transcript & summarize endpoints

Pin the speech language and control the summary output language on YouTube, TikTok, and Instagram.

  • transcript?language=tr pins Whisper's language - recommended for short clips where auto-detection is unreliable
  • summarize?language=tr also writes the summary, key points, and topics in that language (default stays English)
  • Documented on the endpoint pages and synced to the MCP, CLI, n8n, and Playground catalogs
Fixed

Accurate no-speech detection for music-only videos

Whisper-based transcription no longer invents text for videos that contain only music or silence.

  • Known hallucination phrases, subtitle credits, and music annotations are filtered out
  • Low-confidence segments are dropped; music-only clips now return 422 No speech instead of made-up text
  • Wrong-language output (e.g. Turkish speech labeled as Russian) fixed via validated retries with a pinned language
Improved

TikTok & Instagram transcripts moved to a native pipeline

Transcript and summarize endpoints for TikTok and Instagram now resolve media directly from the platform and transcribe speech with our own pipeline; third-party actors remain only as a fallback.

  • Instagram Reel media resolves via Instagram's GraphQL in ~1-2 s; TikTok media downloads natively over our proxies
  • Typical TikTok transcript latency dropped from ~35-80 s to ~15-20 s
  • Transcripts contain only spoken words - post captions and descriptions are never returned as speech
New

Monitors + HMAC-signed webhooks

Point a monitor at any list-returning endpoint and get only new items POSTed to your webhook — no polling loops on your side.

  • POST /v1/monitors: watch subreddit posts, channel videos, ad-library searches and more on your schedule (15 min to 24 h)
  • Deliveries are HMAC-SHA256 signed (X-Captapi-Signature over timestamp.body) so you can verify authenticity
  • POST /v1/monitors/{id}/test sends a signed test delivery
  • Runs bill credits exactly like direct API calls; cached results stay free
New

Official TypeScript & Python SDKs

Typed clients generated from the same catalog that powers the API, MCP server, and CLI.

  • npm install @captapi/sdk — zero dependencies, works on Node 18+, Deno, Bun, and edge runtimes
  • pip install captapi — sync (Captapi) and async (AsyncCaptapi) clients on httpx
  • A typed, namespaced method for every endpoint; errors always throw with status + code
  • x-api-key header now accepted as an alias for Authorization: Bearer
New

Public status page

Live API health at /status, computed from real production traffic — not a manually flipped switch.

  • GET /v1/status (no auth) returns overall and per-platform success rates and response times over the last 24 h
  • Human view at captapi.com/status refreshes every 2 minutes
New

Batch endpoint (POST /v1/batch)

Run up to 20 endpoint calls concurrently in a single HTTP request.

  • Per-item status and per-item billing — one failed item never fails the batch
  • Cached items are free, exactly like single calls
  • Ideal for enriching lists of profiles or videos in one round-trip
New

Automatic metric history (GET /v1/history)

Follower, view, and like counts now accumulate into a time series automatically whenever tracked profile or post endpoints are fetched fresh.

  • Chart growth without building your own snapshot pipeline
  • Covers profile and details endpoints across YouTube, TikTok, Instagram, X, Reddit, Bluesky, Twitch and more
  • Query by endpoint + URL with a configurable window (up to 365 days)
New

Integrations hub at /integrations

A dedicated page listing every official integration with setup guides, plus a hover dropdown in the navbar.

  • MCP Server (hosted + local), TypeScript & Python SDKs, CLI, n8n, Make.com, Apify Actor, and the REST API in one place
  • Each card links to its setup guide and npm/PyPI package
  • Machine-readable manifests highlighted for AI agents (/mcp.json, /llms.txt, OpenAPI 3)
Improved

Richer response data across 11 platforms

Closed field gaps against competitors with dedicated upstream sources.

  • Reddit: comment upvotes + threading (residential routing, optional OAuth app support)
  • Twitch: clip/profile metadata and streamer schedules via a dedicated actor
  • TikTok Shop: product reviews via a dedicated actor
  • Also enriched: link-in-bio socials/email, Rumble embeds/streams/comments, Pinterest pin details, SoundCloud artist fields, Bluesky embeds, Truth Social website, GitHub repo/license/topics, X profile counts
Integrations

MCP catalog synced to all 179 tools

The hosted MCP server and every published package now expose the full endpoint catalog.

  • @captapi/mcp 0.4.0, @captapi/cli 0.3.0, n8n-nodes-captapi 0.3.0, Apify Actor 0.3 published
  • OpenAPI 3 spec linked from llms.txt manifests for AI agent discovery
New

Platform landing pages + APIs dropdown

Every platform got a dedicated landing page with endpoint lists, FAQ, and structured data; the navbar now opens the full API catalog.

Improved

Real response examples for all 179 endpoints

Every endpoint page now shows a real captured response, refreshed in batches across the whole catalog.

  • Batches covered Twitter/LinkedIn/Reddit, TikTok Shop/Threads/Snapchat/ad libraries, GitHub/Facebook Marketplace/Events/Pinterest/Spotify, and Rumble/Twitch/Bluesky/SoundCloud/Kwai
  • Dozens of mapper fixes along the way: timestamped transcript segments, YouTube comment author metadata, duration parsing, Instagram actor replacement and more
Platforms

180 endpoints across 29 platforms

Major catalog expansion with reliability fixes across the board.

  • New platforms and endpoints across the catalog, audited live end-to-end
  • Endpoint reliability, agent URL validation, and integration discovery improvements
  • Comprehensive live audit reports added to the repo
Platforms

EnsembleData & Scrape Creators parity push

Expanded TikTok, Instagram, YouTube, and Facebook coverage to close competitor gaps.

  • 19 new endpoints: TikTok hashtag/top/user search, song details, trending; IG hashtag/profile search, story highlights, embed; YT comment replies, channel playlists, community posts; FB profile posts/reels, group posts, comment replies
  • Per-result pricing normalized to guarantee margins; dashboard analytics tab with daily usage charts
New

Captapi launch

One API for structured public social-media data: transcripts, AI summaries, comments, profiles, search, and downloads.

  • REST API with Bearer auth, credit-based billing, and cached-result discounts
  • Dashboard with API keys, playground, usage analytics, and billing
  • SEO/AEO foundation: llms.txt, structured data, programmatic docs

Try what's new

Start with 100 free credits — no credit card required.