# What's new

Changelog

What changes for developers using the API, newest first. Changes within `/v1` are additive: anything that would break a client is announced here first, with a sunset date.

[JSON Feed](https://socialtap.dev/changelog.json)

1. November 11, 2026Fixed

   ## Reddit search returns post bodies again, on every sort

   [Reddit Search API](https://socialtap.dev/docs/reference/reddit/search_posts/index.md)

   `GET /v1/reddit/search_posts` with `include_body=true` returns each post's `text` and `mentions` and its exact `type` again. Reddit closed the feed the bodies came from, so since 2026-11-11 those requests answered without bodies, marked `partial_data`. The bodies now come from another Reddit feed, asked for the page's own posts, so `include_body` also works with `sort=relevance`, the default, which used to return `invalid_input`. The price is unchanged.
2. November 11, 2026Added

   ## Reddit search for image, video and gallery posts

   [Reddit Search API](https://socialtap.dev/docs/reference/reddit/search_posts/index.md)

   `GET /v1/reddit/search_posts` takes a new `media` parameter: `image`, `video`, `carousel` (a gallery) or `any`. It returns only the posts whose image, video or gallery was uploaded to Reddit, each with its score, comment count and time, and with `image` or `video` the post's `type` is exact. A gallery comes with every image in `media`. Other results carry the preview Reddit's search shows, often only a small thumbnail on `popular` and `most_comments` (the media item's `url` is then null): the Reddit Post API returns the media file. Reddit's own search applies the filter, so pages stay full, and it works with `subreddit`, every `sort`, `since` and `until`. A query that uses `site:`, `url:` or `self:yes` can't be combined with `media` and returns `invalid_input`. Posts that link to media on another site are not included.
3. November 11, 2026Added

   ## TikTok search suggestions

   [TikTok Search Suggestions API](https://socialtap.dev/docs/reference/tiktok/search_suggestions/index.md)

   `tiktok.search_suggestions` returns the searches TikTok's search box completes a word or part of a word with, in TikTok's order, with no login. Each suggestion has its text, its position, the link to that search and its language, and an account TikTok proposes comes with its ID, username, display name, picture and verified badge. `country` asks for the suggestions people in that country see; the endpoint's page lists the countries it takes, and the United States is the default. Use it to expand a keyword before `tiktok.search_posts`, or to compare what each country searches for a word.
4. November 10, 2026Added

   ## Amazon products, search, reviews, offers, sellers, best sellers, deals and influencer storefronts

   [Amazon Product API](https://socialtap.dev/docs/reference/amazon/product/index.md), [Amazon Product Search API](https://socialtap.dev/docs/reference/amazon/search_products/index.md), [Amazon Reviews API](https://socialtap.dev/docs/reference/amazon/reviews/index.md), [Amazon Offers API](https://socialtap.dev/docs/reference/amazon/offers/index.md), [Amazon Seller API](https://socialtap.dev/docs/reference/amazon/seller/index.md), [Amazon Best Sellers API](https://socialtap.dev/docs/reference/amazon/top_products/index.md), [Amazon Deals API](https://socialtap.dev/docs/reference/amazon/deal_products/index.md), [Amazon Shop API](https://socialtap.dev/docs/reference/amazon/shop/index.md), [Amazon Shop Lists API](https://socialtap.dev/docs/reference/amazon/shop_lists/index.md), [Amazon Shop Posts API](https://socialtap.dev/docs/reference/amazon/shop_posts/index.md)

   Amazon is a new platform, with no login, on 23 marketplaces: each endpoint takes a link from any of them, a short link where Amazon makes one, or an ID with `country`. `amazon.product` returns a product from its link, an amzn.to or a.co short link or its ASIN: price, list price, seller, who ships it, rating with its histogram, the monthly sales badge, Best Sellers Rank, specifications, variations, images and videos. `amazon.search_products` searches products a page at a time, with five sorts and whether each result is sponsored. `amazon.reviews` returns the top customer reviews a product page shows on every marketplace but amazon.com, which shows reviews only to signed-in visitors and answers `private_or_unavailable`. `amazon.offers` lists every seller's offer of a product, with price, condition, delivery dates, the buy box and the seller's rating. `amazon.seller` returns a third-party seller's ratings over 30 days, 90 days, 12 months and lifetime, and the business details it discloses. `amazon.top_products` returns Best Sellers or New Releases of a category, ranked, and `amazon.deal_products` Today's Deals with the deal price, its type, badge and end time, by category.

   `amazon.shop` returns an Amazon Influencer storefront from its link, handle or account ID: the creator's name, bio, social links, Top Creator badge, curations and trending picks. `amazon.shop_lists` lists its idea lists, using the `playlist` resource, and `amazon.shop_posts` its videos and photos, with the products tagged in each.

   A new resource comes with it: `offer`, one seller's price for one product in one condition.
5. November 10, 2026Added

   ## Pinterest pins, boards, profiles, search, ideas, Trends and link save counts

   [Pinterest Pin API](https://socialtap.dev/docs/reference/pinterest/pin/index.md), [Pinterest Search API](https://socialtap.dev/docs/reference/pinterest/search_pins/index.md), [Pinterest Board API](https://socialtap.dev/docs/reference/pinterest/board/index.md), [Pinterest Board Pins API](https://socialtap.dev/docs/reference/pinterest/board_pins/index.md), [Pinterest Boards API](https://socialtap.dev/docs/reference/pinterest/boards/index.md), [Pinterest Profile API](https://socialtap.dev/docs/reference/pinterest/profile/index.md), [Pinterest Profile Pins API](https://socialtap.dev/docs/reference/pinterest/pins/index.md), [Pinterest Topic API](https://socialtap.dev/docs/reference/pinterest/topic/index.md), [Pinterest Trends API](https://socialtap.dev/docs/reference/pinterest/top_trends/index.md), [Pinterest URL Save Count API](https://socialtap.dev/docs/reference/pinterest/web_page/index.md)

   Pinterest is a new platform, with no login. `pinterest.pin` returns a pin from its link, a pin.it short link or its ID, on any of Pinterest's country sites: its pictures, video or every page of an idea pin, exact saves, reactions and comments, the link it points to, its board and the account that first pinned it. `pinterest.search_pins` searches pins a page at a time. `pinterest.board` returns a board, or one of its sections, with its description, cover, exact pin and follower counts and collaborators, using the `playlist` resource, and `pinterest.board_pins` lists its pins. `pinterest.profile` returns an account with exact follower, pin and board counts and monthly views; `pinterest.boards` lists its boards, and `pinterest.pins` the pins on its saved or created tab. `pinterest.topic` returns one of Pinterest's ideas pages, from its link or its words, with related and parent topics and related searches.

   Pinterest names the pins of its logged-out search, board and ideas lists by an encrypted ID (`e1_…`) its pin page doesn't open logged out, so those pins carry that ID and `pinterest.pin` refuses it with the reason; everything else about the pin is in the list's item.

   Two new resources come with it. `trend` is what is trending on a platform: `pinterest.top_trends` returns Pinterest Trends' top monthly, top yearly, growing or seasonal searches for a country, filtered by interest, age and gender, with each term's search index and weekly, monthly and yearly change. `web_page` is a web page as a platform counts it: `pinterest.web_page` returns how many times any link was saved to Pinterest, counted exactly as written.
6. November 9, 2026Changed

   ## LinkedIn members the data partner can't answer

   [LinkedIn Profile API](https://socialtap.dev/docs/reference/linkedin/profile/index.md)

   When LinkedIn hides a member's page and the data partner can't answer for them, `linkedin.profile` used to answer `upstream_blocked`. It now answers with a public search engine's copy of the page: name, headline, about text, current employer, school, location and connections, at the base price. These answers say so: `meta.source` is `web_search`, `id` is the member's public name, what the text says is in `approximate_fields`, and the lists the copy cannot see are in `unknown_fields`. A member no search engine lists still answers `upstream_blocked`, free. `fill=true` on the web search endpoints is unchanged: it fills a result from the live page or not at all.
7. November 9, 2026Changed

   ## Test keys are retired: use a live key and your free credits

   Test mode is gone. A test key (`st_test_…`), the public docs key included, now answers `401 unauthorized` with `details.reason` `test_key_retired`. Use an API key from your dashboard instead: every new account starts with free credits, and failed requests stay free. Every endpoint's recorded example response is still in its docs, its OpenAPI example and the MCP tools, so you can see the shape of an answer before you spend anything.

   With test keys gone, responses no longer carry `meta.mode`, keys and request log entries no longer have a `mode`, and `GET /v1/api_keys` and `GET /v1/requests` no longer take a `mode` filter. `POST /v1/api_keys` refuses `mode: "test"` with `invalid_input` instead of making a live key. Magic test inputs (`socialtap_test_<code>`) and `t1.` cursors are ordinary values now, and the `test_default_example` warning is gone.
8. November 9, 2026Fixed

   ## TikTok hashtag posts for the hashtags that failed

   [TikTok Hashtag Posts API](https://socialtap.dev/docs/reference/tiktok/hashtag_posts/index.md)

   `GET /v1/tiktok/hashtag_posts` used to return `upstream_error` for about a third of real hashtags (#kpop, #football, #recipe and other popular ones), because TikTok's US servers fail them every time. Those hashtags are now read from TikTok's servers in Asia and return their top posts. These requests take longer, often 10 to 30 seconds, and the last few posts of the page can differ from TikTok's US ranking. A hashtag that fails there too still returns `upstream_error` and isn't charged.
9. November 8, 2026Changed

   ## Cached profiles answer every form of an account

   With `max_age`, a profile fetched by one form of an account now also answers the forms its record proves are the same account: after `GET /v1/youtube/profile?handle=@MrBeast`, the channel's `/channel/UC…` link and its UC… ID are cache hits too, free like every hit. A LinkedIn company fetched by its link answers its bare name. Only the account's own link, its ID and its username are aliased, and only when the endpoint reads them as that account, with the request's other params the same.
10. November 8, 2026Changed

    ## Errors and warnings say what to do

    - A `forbidden` error's `remediation` is now the one for its `details.reason`: a key without a scope reads "Use an API key with the jobs scope…", not every reason's.
    - A cursor that SocialTap could not have issued (`c1.garbage`) is `invalid_cursor` with `details.reason` `malformed`, not `expired`.
    - A `partial_data` warning names the fields that are null and says a retry may fill them, without our upstream request's error.
    - `url` on an endpoint that takes `handle`, or the reverse, suggests the other: `GET /v1/tiktok/profile?url=…` answers "did you mean "handle"? handle takes a username or a profile link."
    - A TikTok share link (`vm.tiktok.com/…`) sent as `handle` is called a share link that may open a video or a profile, with what to send instead.
    - `/v1/twitter/…` suggests the same endpoint under `/v1/x/`.
11. November 8, 2026Fixed

    ## Facebook event searches with no results answer an empty list

    [Facebook Event Search API](https://socialtap.dev/docs/reference/facebook/search_events/index.md)

    `GET /v1/facebook/search_events` answers a search that matches nothing with `data: []` and `page.has_more: false` again, instead of `upstream_blocked` after several attempts. Since 2026-11-06 most searches had been answered from a thinner fallback while Facebook refused the request behind the first page. Every page now comes from the request that lists the results, so a first page holds fewer events than before and the next pages continue as they did.
12. November 8, 2026Fixed

    ## Instagram audio endpoints refuse an audio whose page shows another one

    [Instagram Audio API](https://socialtap.dev/docs/reference/instagram/sound/index.md), [Instagram Audio Reels API](https://socialtap.dev/docs/reference/instagram/sound_posts/index.md)

    Instagram merges some original audio with other audio, and the merged audio's page then shows another creator's audio and its reels. `GET /v1/instagram/sound` used to return that other audio, with its own `id`, and `GET /v1/instagram/sound_posts` its reels. Both now answer `private_or_unavailable` for such an audio, free, and the error message names the audio Instagram shows instead. An audio ID that names a cluster of audios rather than one audio is refused the same way. Songs, by their audio page ID or asset ID, and original audio that Instagram still shows on its own page work as before.
13. November 8, 2026Changed

    ## LinkedIn members LinkedIn hides, filled in full

    LinkedIn hides most members' public profiles from logged-out visitors. `GET /v1/linkedin/profile` used to answer `upstream_blocked` for them. It now returns them in full: a data partner reads the public profile live at request time and fills the same fields, with `meta.source` `vendor` and the vendor price shown on the endpoint's page. Those answers have the member's experience, education, skills, certifications, projects, publications, patents, honors and recommendations, plus two new fields, `platform_specific.linkedin.is_open_to_work` and `is_hiring`. `follower_count` and `connection_count` are null on them. A member name that doesn't exist now returns `not_found` instead of `upstream_blocked`, and as with every failed request it isn't charged. Members whose public page LinkedIn shows, and every company, school and showcase Page, are unchanged.
14. November 8, 2026Changed

    ## A smaller MCP tool list, and call_endpoint

    The MCP server now lists a small default set of tools instead of every tool, so it takes far less of your agent's context: `find_endpoint`, the kinds of data most platforms have (posts, profiles, comments, transcripts, engagement, search), the docs tools, `get_account`, and the new `call_endpoint`, which calls any endpoint by the ID `find_endpoint` gives. Add `?tools=all` to the server's URL to list every tool, or name toolsets and tools (`?tools=default,jobs`). Every tool still answers when called by name. Tool descriptions are shorter: each platform's details are in `find_endpoint`'s results, which now include the endpoint's notes. A tool that takes `handle` also accepts it as `url`, and the other way around. Concise results leave out null fields. In the TypeScript SDK, `socialtapTools()` returns the same default tools (`tools: "all"` for every one). See [Build with AI agents](https://socialtap.dev/docs/agents/index.md#mcp-server).
15. November 8, 2026Changed

    ## Reddit comments count their replies

    [Reddit Comments API](https://socialtap.dev/docs/reference/reddit/comments/index.md)

    `GET /v1/reddit/comments` now fills `metrics.reply_count` with a comment's direct replies when the page shows all of them. It stays null when Reddit holds some back behind a "more replies" link, whose count includes their own replies: `platform_specific.reddit.more_replies_count` has that number.
16. November 8, 2026Fixed

    ## Snapchat Spotlight sizes and exact lengths are back

    [Snapchat Spotlight API](https://socialtap.dev/docs/reference/snapchat/spotlight/index.md)

    `snapchat.spotlight` returns `media[].width`, `media[].height` and an exact `duration_ms` again where Snapchat states them, after a day of nulls and whole-second lengths when Snapchat changed its Spotlight pages. Since that change, Snapchat no longer publishes an image Spotlight's file or a sound's ID logged out: `media[].url` is null on an image Spotlight (its cover stays in `thumbnail_url`), and `platform_specific.snapchat.sound.id` is null.
17. November 8, 2026Changed

    ## sort takes the platforms' own words

    `sort` now reads `new` and `latest` as `newest`, `old` as `oldest` and `top` as `popular`, in any case, on every endpoint that offers that order: `GET /v1/reddit/subreddit_posts?sort=new` and `GET /v1/youtube/comments?sort=top` work as Reddit and YouTube name their menus. Answers, cursors and cached copies are the same as for the value it means. The catalog lists them as `param_vocabulary[].value_aliases`.
18. November 8, 2026Added

    ## TikTok followers and following

    [TikTok Followers API](https://socialtap.dev/docs/reference/tiktok/followers/index.md), [TikTok Following API](https://socialtap.dev/docs/reference/tiktok/following/index.md)

    `GET /v1/tiktok/followers` and `GET /v1/tiktok/following` list the accounts that follow a public TikTok account, newest first, and the accounts it follows, from its username, link, user ID or secUid: each account's username, display name, avatar, verified mark and exact follower, following, like and post counts. TikTok serves only an account's most recent followers; past that the list ends with `page.end_reason` `platform_limit`. A private account, or a public one that hides who it follows, returns `private_or_unavailable`.
19. November 8, 2026Added

    ## TikTok hashtag posts

    [TikTok Hashtag Posts API](https://socialtap.dev/docs/reference/tiktok/hashtag_posts/index.md)

    `GET /v1/tiktok/hashtag_posts` returns the top public videos and photo posts under a TikTok hashtag, from its link, its name or the app's share link: each post's caption, hashtags, author username, play count, cover and a video link that plays without TikTok's cookies. Logged out, TikTok shows one page of a hashtag's top posts, and its embed fails for some hashtags: those return `upstream_error` and aren't charged.
20. November 8, 2026Fixed

    ## A removed TikTok Shop product answers not_found

    [TikTok Shop Product API](https://socialtap.dev/docs/reference/tiktokshop/product/index.md), [TikTok Shop Reviews API](https://socialtap.dev/docs/reference/tiktokshop/reviews/index.md)

    A product TikTok Shop has removed or delisted now answers `not_found` in one attempt, free, with a message saying it was removed, instead of `upstream_blocked` after several attempts.
21. November 8, 2026Changed

    ## X post links from fxtwitter and vxtwitter, and post IDs in X search results

    [X (Twitter) Post API](https://socialtap.dev/docs/reference/x/post/index.md), [X (Twitter) Post Search API](https://socialtap.dev/docs/reference/x/search_posts/index.md)

    `GET /v1/x/post` takes post links on fxtwitter.com, vxtwitter.com, fixupx.com and fixvx.com, the mirrors people share X links on, as the post on x.com. `GET /v1/x/search_posts` now fills each result's `post.id` from its `/status/<id>` link. `post.author.id` stays null until the result is filled (`fill=true`): a post's link names the author's username, not X's number for the account.
22. November 8, 2026Fixed

    ## YouTube upload dates from labels are dates

    [YouTube Channel Videos API](https://socialtap.dev/docs/reference/youtube/posts/index.md)

    Beyond each tab's newest uploads, `GET /v1/youtube/posts` reads `published_at` from YouTube's labels ("1 year ago"). It is now the day that label allows at the latest, at midnight UTC (the hour for labels in hours), still listed in `approximate_fields`, instead of a second the label never stated. `since` compares those by day, so send it as a date.
23. November 6, 2026Added

    ## Apple Music tracks, albums, artists, search and charts

    [Apple Music Track API](https://socialtap.dev/docs/reference/applemusic/track/index.md), [Apple Music Album API](https://socialtap.dev/docs/reference/applemusic/album/index.md), [Apple Music Artist API](https://socialtap.dev/docs/reference/applemusic/artist/index.md), [Apple Music Track Search API](https://socialtap.dev/docs/reference/applemusic/search_tracks/index.md), [Apple Music Album Search API](https://socialtap.dev/docs/reference/applemusic/search_albums/index.md), [Apple Music Artist Search API](https://socialtap.dev/docs/reference/applemusic/search_artists/index.md), [Apple Music Playlist Search API](https://socialtap.dev/docs/reference/applemusic/search_playlists/index.md), [Apple Music Top Tracks API](https://socialtap.dev/docs/reference/applemusic/top_tracks/index.md), [Apple Music Top Albums API](https://socialtap.dev/docs/reference/applemusic/top_albums/index.md), [Apple Music Top Playlists API](https://socialtap.dev/docs/reference/applemusic/top_playlists/index.md)

    Apple Music is a new platform, with no login and any country's store through `country`. `applemusic.track` returns a song, music video or radio episode from its link or ID, with its artists, album, length, ISRC, composer, genres, audio formats and preview file. `applemusic.album` returns an album or single with its tracks in order, using the new `album` resource: credited artists, release date, label, UPC, copyright, genres and total length. `applemusic.artist` returns an artist's bio, pictures, genres and the sections of their page, such as top songs and albums; Apple states no follower count, so that is null. `applemusic.search_tracks`, `search_albums`, `search_artists` and `search_playlists` search one kind each, with `kind` choosing music videos, radio episodes or stations. `applemusic.top_tracks`, `top_albums` and `top_playlists` return a country's charts with each row's rank.
24. November 6, 2026Changed

    ## The CLI's init command says where it stores your key

    `socialtap init` now prints each file it stores your API key in, and makes those files readable only by you, including ones that already existed. A key from `$SOCIALTAP_API_KEY` no longer goes into Claude Code's config when you run `init` in a terminal: Claude Code signs you in with your browser instead. Pass `--api-key`, or keep a Claude Code entry that already sends a key, and the key is stored as before.
25. November 6, 2026Changed

    ## fill=true stops looking up a page's results after repeated upstream failures

    With `fill=true`, a page whose lookups fail five times in a row, because the platform is refusing them, no longer looks up its remaining results. They stay unfilled at no charge and the answer carries the usual `partial_data` warning, as for any lookup that fails. A result the platform no longer has (`not_found`) doesn't count toward the five, and a result filled starts the count over.
26. November 6, 2026Changed

    ## Accounts that have never paid get a lower request ceiling

    An account that has never paid has a lower runaway-protection ceiling, which its first payment removes within a minute: `max_rps` in `GET /v1/account` states yours. In test mode the ceiling is lower than a live key's, since recorded answers need no more; the `RateLimit-Policy` header states it.

    Failed requests stay free, within a limit: when an account's failures cost far more upstream in an hour than its charged requests paid for, its live requests answer `rate_limited` until that passes, with `Retry-After` and a message that says why. Failures alongside a normal share of successes never meet it, nor do failures that cost nothing to find out; and for an account that has paid, neither do a platform's outages (`upstream_blocked`, `upstream_error`, `overloaded`).

    A request body above the size the API accepts now answers `request_too_large` (413), the new error code, instead of `invalid_input`. Changes to an account's keys and settings, and usage reports, are limited per account per minute, far above what a dashboard or ordinary automation sends; API keys and the dashboard count apart, and what removes access (revoking a key, removing a member) is never limited.

    `GET /v1/usage` counts requests refused before any work (a 402 or 429 with no charge) per account, outcome and surface: grouped by endpoint or key they have `null` there, and a filter by endpoint or key leaves them out, except that `spend_limit_reached` stays with its key. `GET /v1/requests` no longer lists requests refused before any work: `GET /v1/usage` counts them, and `GET /v1/usage/rate` the ceiling's. With `keep_response_bodies` on, uncharged answers past a small allowance per minute say `not_stored`; charged answers are always kept.
27. November 6, 2026Changed

    ## Revoking an API key also revokes the admin keys it made

    `DELETE /v1/api_keys/{id}` now also revokes every key with the `admin` scope that the key created, gave `admin` or rotated, and those keys' in turn, so a leaked admin key's copies don't outlive it. Keys without `admin` keep working; the answer lists both (`also_revoked`, `left_standing`), and a key can't revoke a key above it. Keys now read `created_by_key` and `created_by_user`, and webhook endpoints `created_by_user`. The account's owner is emailed when an API key makes or rotates a live key or changes a webhook endpoint, and an API key can no longer turn off `api_keys` notifications.
28. November 6, 2026Changed

    ## The TypeScript SDK keeps your key on the API's origin across redirects

    The TypeScript SDK sends your key in its own header, which HTTP clients carry across a redirect. It now follows a redirect only to the same origin, or from http to https on the same host, and otherwise fails with an error instead of retrying. The API itself doesn't redirect; this matters if a proxy or a `baseURL` in front of it does: point it at the origin that answers.
29. November 6, 2026Changed

    ## An answer that shows a secret is kept for less time

    An `Idempotency-Key` retry of a request that showed a secret (a new key or webhook endpoint, a rotated secret) now gets the same answer for minutes rather than a day ([Idempotency](https://socialtap.dev/docs/idempotency/index.md)); after that the same key doesn't run again: it answers `idempotency_key_reused`, `details.reason` `answer_expired`. A key's previous secret, after a rotation, gets `idempotency_key_reused` instead of that answer. `GET /v1/events` answers a job event's `results_url` only to a credential with `jobs:read`; others read the job's `url` there.
30. November 6, 2026Fixed

    ## Speech-to-text refuses a file too large for it before downloading it

    A transcript endpoint that falls back to speech-to-text now answers `no_transcript`, free, for a media file over 24 MB, before reading the file when its size is declared, after trying any smaller file of the media. Such a file could fail with `upstream_error` after several attempts. A file under the size runs as before, and captions are unaffected, whatever the media's size.
31. November 6, 2026Added

    ## Spotify tracks, albums, artists, playlists, podcasts and search

    [Spotify Track API](https://socialtap.dev/docs/reference/spotify/track/index.md), [Spotify Album API](https://socialtap.dev/docs/reference/spotify/album/index.md), [Spotify Artist API](https://socialtap.dev/docs/reference/spotify/artist/index.md), [Spotify Playlist API](https://socialtap.dev/docs/reference/spotify/playlist/index.md), [Spotify Playlist Tracks API](https://socialtap.dev/docs/reference/spotify/playlist_tracks/index.md), [Spotify Podcast API](https://socialtap.dev/docs/reference/spotify/podcast/index.md), [Spotify Podcast Episodes API](https://socialtap.dev/docs/reference/spotify/podcast_episodes/index.md), [Spotify Track Search API](https://socialtap.dev/docs/reference/spotify/search_tracks/index.md), [Spotify Album Search API](https://socialtap.dev/docs/reference/spotify/search_albums/index.md), [Spotify Artist Search API](https://socialtap.dev/docs/reference/spotify/search_artists/index.md), [Spotify Playlist Search API](https://socialtap.dev/docs/reference/spotify/search_playlists/index.md), [Spotify Podcast Search API](https://socialtap.dev/docs/reference/spotify/search_podcasts/index.md)

    Spotify is a new platform, with no login. `spotify.track` returns a track or podcast episode from its link, share link, URI or ID, with its artists, exact play count, album, ISRC, label and credits. `spotify.album` returns a release with all its tracks in order, using the `album` resource. `spotify.artist` returns an artist's bio, pictures, followers, monthly listeners, world rank, top cities and top tracks, with the IDs of their releases. `spotify.playlist` returns a playlist's details, and `spotify.playlist_tracks` its tracks a page at a time, with who added each one and when. `spotify.podcast` returns a show using the new `podcast` resource: publisher, topics, rating and episode count. `spotify.podcast_episodes` lists a show's episodes, and `since` and `until` work whichever order the show lists them in. `spotify.search_tracks`, `search_albums`, `search_artists`, `search_playlists` and `search_podcasts` search one kind each: `kind` on `search_tracks` chooses podcast episodes, and on `search_artists` the accounts of listeners.
32. November 6, 2026Changed

    ## Webhook deliveries are paced

    Deliveries are now paced per account and per host: one over the pace stays `pending` with a later `next_attempt_at`, and is never dropped. Test mode is paced tightly. A target that has stopped answering gets a shorter timeout until it answers again; one that answers slowly keeps the full one. See [Webhooks](https://socialtap.dev/docs/webhooks/index.md).
33. November 5, 2026Added

    ## Bluesky profiles, posts, comments and post search

    [Bluesky Profile API](https://socialtap.dev/docs/reference/bluesky/profile/index.md), [Bluesky User Posts API](https://socialtap.dev/docs/reference/bluesky/posts/index.md), [Bluesky Post API](https://socialtap.dev/docs/reference/bluesky/post/index.md), [Bluesky Comments API](https://socialtap.dev/docs/reference/bluesky/comments/index.md), [Bluesky Post Search API](https://socialtap.dev/docs/reference/bluesky/search_posts/index.md)

    Bluesky is a new platform, with no login. `bluesky.profile` returns a public account by its handle, DID or link, with its exact follower, following and post counts, verified badge and the links it lists. `bluesky.posts` lists an account's posts a page at a time, by the tabs of its profile (posts, replies, media, video) and by date. `bluesky.post` returns one post from any of its links or its at:// ID, with its text, images and video, link card, quote and exact counts. `bluesky.comments` returns a post's public replies in one flat list, most liked, newest or oldest. `bluesky.search_posts` finds posts by words, author, mention, hashtag, linked site, language and date, newest first or by Bluesky's Top ranking. It reads Bluesky's own search, which Bluesky's app offers only to signed-in people, so if that route stops answering, the first page comes from a public web search's index with a `partial_data` warning. An account that chose to be seen only by signed-in people is `private_or_unavailable`, and its posts and replies are left out of lists.
34. November 5, 2026Added

    ## Monthly plans, and new credit packs

    You can now subscribe to a monthly plan, or keep buying credit packs with no subscription. Plans are cheaper per credit, and every plan and pack gets every endpoint on every platform. See [pricing](https://socialtap.dev/pricing/index.md) and [credits](https://socialtap.dev/docs/credits/index.md#monthly-plans).

    A plan's credits are spent first, and what is left of them ends at each renewal. Credits from packs and top-ups never expire, including those you already hold. If you run out, buy your plan's top-up or any pack, or turn on auto top-up.

    New routes: `GET /v1/billing/subscription` reads your plan; `POST /v1/billing/subscription/checkout`, `PATCH /v1/billing/subscription` and `POST /v1/billing/subscription/cancel` (the dashboard session only) start, change and cancel it. New events: `plan.renewed`, `plan.changed`, `plan.payment_failed` and `plan.ended`. Credit history gains the `plan` type.

    The packs changed: the `pack` IDs of `POST /v1/billing/checkout` are now `1k`, `30k`, `250k` and `2m`, plus each plan's top-up (`starter_topup`, `growth_topup`, `scale_topup`). The old IDs `20k`, `80k` and `400k` are gone.
35. November 5, 2026Added

    ## SoundCloud artists and tracks

    [SoundCloud Artist API](https://socialtap.dev/docs/reference/soundcloud/artist/index.md), [SoundCloud Artist Tracks API](https://socialtap.dev/docs/reference/soundcloud/tracks/index.md), [SoundCloud Track API](https://socialtap.dev/docs/reference/soundcloud/track/index.md)

    SoundCloud is a new platform. `soundcloud.track` returns a public track from any of its links, a share link, its URN or its ID: its title, description, uploader, exact play, like, repost, comment and download counts, genre, tags, license and release metadata. `soundcloud.artist` returns a public account from its name, link, URN or ID, with its bio, follower count and links. `soundcloud.tracks` lists an account's public tracks, newest first, a page at a time, and takes `since` and `until`. A track's playback policy, monetization model, encodings and playable length depend on the listener's country, and these fields give the US view.
36. November 5, 2026Added

    ## Telegram channels, posts and channel search

    [Telegram Channel API](https://socialtap.dev/docs/reference/telegram/channel/index.md), [Telegram Channel Posts API](https://socialtap.dev/docs/reference/telegram/channel_posts/index.md), [Telegram Post API](https://socialtap.dev/docs/reference/telegram/post/index.md), [Telegram Channel Search API](https://socialtap.dev/docs/reference/telegram/search_channels/index.md)

    Telegram is a new platform, from its public web pages with no login. `telegram.channel` returns a public channel, group, user or bot by its username or link: its title, description, subscriber or member count and verified flag, and what kind of account it is. `telegram.channel_posts` lists a channel's posts with their text, media, views, reactions, forwards and replies, and `contains` searches inside the channel. `telegram.post` returns one post from its link. `telegram.search_channels` finds public channels by keyword through a web search index, so it holds what the index has seen. Telegram shows some channels only in some countries and answers `private_or_unavailable` for them elsewhere, and it answers only a channel search's newest matches.
37. November 5, 2026Added

    ## Twitch profiles, videos, schedules and clip transcripts

    [Twitch Profile API](https://socialtap.dev/docs/reference/twitch/profile/index.md), [Twitch Videos API](https://socialtap.dev/docs/reference/twitch/videos/index.md), [Twitch Video and Clip API](https://socialtap.dev/docs/reference/twitch/video/index.md), [Twitch Schedule API](https://socialtap.dev/docs/reference/twitch/schedule/index.md), [Twitch Clip Transcript API](https://socialtap.dev/docs/reference/twitch/transcript/index.md)

    Twitch is a new platform. `twitch.profile` returns a channel from its login, link or ID: exact followers, whether it is on air and for how many viewers, its links, its Partner or Affiliate badge and its latest broadcast. `twitch.videos` lists a channel's past broadcasts, highlights and uploads, newest or most viewed, up to its first 100 per type and sort. `twitch.video` returns one video or clip with its signed files, category, chapters and content labels. `twitch.schedule` returns the live broadcasts a channel has announced for the coming weeks, with cancelled ones marked. `twitch.transcript` returns a clip's speech as timed segments, from the clip's audio.
38. November 5, 2026Added

    ## The TypeScript SDK and the CLI are on npm

    `npm install socialtap` adds the TypeScript SDK: a typed method for every endpoint, retries, auto-pagination, and the agent tools for the Vercel AI SDK. The same package is the CLI: `npx socialtap` calls any endpoint from the shell, and `npx socialtap init` sets up Claude Code, Codex, Cursor and Gemini CLI with the Agent Skill and the MCP server.
39. November 5, 2026Added

    ## Web searches can favor a country's results

    Every endpoint that finds items through a web search index now takes `country`, an ISO 3166-1 alpha-2 code, to favor that country's results. It changes the search engine's ranking and is not a filter, so pages from elsewhere still appear, and how much changes depends on the query. Without it, results are as before. It takes the countries search engines rank for, listed in each endpoint's docs; any other code answers `invalid_input` at no charge. `/v1/telegram/search_channels?query=news&country=BR` is an example.
40. November 5, 2026Fixed

    ## Web searches answer a query too long for any search engine with invalid_input

    A web search endpoint (`search_profiles`, `search_posts` and the others that find items through a search index) now answers a query too long for any search engine to read with `invalid_input`, where it answered `upstream_error` after several attempts. It costs no credit, as it did before. A query only one engine can read goes on to that engine with fewer attempts, and its list ends with `page.end_reason` `platform_limit` where the next page used to fail with `upstream_error`.
41. November 5, 2026Fixed

    ## Fewer web search lists end early on an empty page

    A web search endpoint could answer `page.has_more` true and then an empty page, on a query whose next page the search engine answered with its first page again, though it held more further on. The next page is now asked the way that can reach it, so fewer lists end that way. Some still end on an empty page before the engine's results do.
42. November 4, 2026Added

    ## Agents can get an API key with auth.md, and MCP clients sign in with a browser

    An agent without a key now follows [`/auth.md`](https://socialtap.dev/auth.md): it registers with `POST /agent/identity`, shows its user a link and a code, the user signs in or creates an account and approves it, and the agent collects its key from `POST /oauth2/token`. It works for an existing account too, needs no email address, and nobody is emailed until the user acts. The registration also returns a public test key to build with meanwhile.

    The MCP server now supports OAuth: add it to your client with no key, and the client signs you in the first time a tool needs it. Listing tools and the free tools still work without signing in, and an API key still works. A call to a tool that needs a key, made without a good one, now answers HTTP 401 with a `WWW-Authenticate` challenge instead of a tool error, which is what starts a client's sign-in.

    `POST /v1/agent_signup` keeps working and is deprecated. A 401 now names `details.agent_auth_url` and `WWW-Authenticate` too.
43. November 4, 2026Fixed

    ## Fewer false empty answers on TikTok ads and fewer blocked requests on TikTok Shop

    `tiktok.search_ads` with `search_by=advertiser` could answer an empty page for an advertiser that has ads, because TikTok's own advertiser lookup answers some calls with nothing. It now asks again several times before it reports no such advertiser.

    `tiktokshop.product` and `tiktokshop.reviews` could answer `upstream_blocked` for products that TikTok Shop refuses to many US exits. They now try many more exits before giving up, so these requests can take a few seconds longer.
44. November 4, 2026Fixed

    ## Fewer failed requests on Google ads and Instagram songs

    [Instagram Audio API](https://socialtap.dev/docs/reference/instagram/sound/index.md), [Google Ads Transparency Center Ad API](https://socialtap.dev/docs/reference/google/ad/index.md), [Google Ads Transparency Center Advertiser Ads API](https://socialtap.dev/docs/reference/google/ads/index.md), [Google Ads Transparency Center Advertiser API](https://socialtap.dev/docs/reference/google/advertiser/index.md), [Google Ads Transparency Center Ads by Website API](https://socialtap.dev/docs/reference/google/search_ads/index.md), [Google Ads Transparency Center Advertiser Search API](https://socialtap.dev/docs/reference/google/search_advertisers/index.md), [Google Ads Transparency Center Search Suggestions API](https://socialtap.dev/docs/reference/google/search_suggestions/index.md)

    `GET /v1/instagram/sound` could answer 502 `upstream_error` for a licensed song when Instagram served one of our exits an empty record, and the `google` endpoints could answer 502 when Google rate-limited an exit by redirecting it. Both now move on to another exit, so these requests succeed more often.

    When no exit can serve one, the answer is 503 `upstream_blocked` instead of 502. It is still free and still retryable.
45. November 4, 2026Added

    ## The public events of a Facebook Page or person

    [Facebook Page Events API](https://socialtap.dev/docs/reference/facebook/events/index.md)

    `facebook.events` lists the events of a Facebook profile's Events tab from its handle, a Page's or a person's: `time=upcoming` (the default, soonest first) or `time=past` (latest first), a page at a time, with `since` and `until`. It returns the `event` resource, as `facebook.event` and `facebook.place_events` do.
46. November 4, 2026Added

    ## Search public Facebook events

    [Facebook Event Search API](https://socialtap.dev/docs/reference/facebook/search_events/index.md)

    `GET /v1/facebook/search_events` searches Facebook's public events by keywords, with `since`, `until` and `location`, and returns the `event` resource, in the Facebook Events section.
47. November 4, 2026Added

    ## Facebook web search

    [Facebook Post Search API](https://socialtap.dev/docs/reference/facebook/search_posts/index.md), [Facebook Page and People Search API](https://socialtap.dev/docs/reference/facebook/search_profiles/index.md), [Facebook Group Search API](https://socialtap.dev/docs/reference/facebook/search_groups/index.md)

    Three searches of Facebook through a public web search's index: `GET /v1/facebook/search_posts` for public posts (`media=video` for videos), `GET /v1/facebook/search_profiles` for Pages and people (`account_type` chooses), and `GET /v1/facebook/search_groups` for public groups. `fill=true` adds each result's full record.
48. November 4, 2026Added

    ## Instagram place and sound search

    [Instagram Location Search API](https://socialtap.dev/docs/reference/instagram/search_places/index.md), [Instagram Audio Search API](https://socialtap.dev/docs/reference/instagram/search_sounds/index.md)

    `GET /v1/instagram/search_places` and `GET /v1/instagram/search_sounds` find Instagram's places and sounds for your words through a public web search's index. `fill=true` adds each result's full record.
49. November 4, 2026Added

    ## Kick clips and transcripts

    [Kick Clip API](https://socialtap.dev/docs/reference/kick/post/index.md), [Kick Clip Transcript API](https://socialtap.dev/docs/reference/kick/transcript/index.md)

    Kick is a new platform. `kick.post` returns a public clip from its link or ID: its title, views, length, thumbnail, playback link, category, channel with its verified badge, who clipped it, the broadcast it came from and, while Kick keeps it, the saved video with its link and the clip's offset. `kick.transcript` returns the clip's speech as timed segments with their language, from the clip's audio, since Kick clips carry no captions of their own.
50. November 4, 2026Added

    ## Kwai

    [Kwai Profile API](https://socialtap.dev/docs/reference/kwai/profile/index.md), [Kwai User Posts API](https://socialtap.dev/docs/reference/kwai/posts/index.md), [Kwai Post API](https://socialtap.dev/docs/reference/kwai/post/index.md)

    Kwai is a new platform. `kwai.profile` returns a public account from its name, link, share link or ID, with its followers, following, likes received and post count. `kwai.posts` lists an account's posts, and `kwai.post` returns one post from any of its links or share links, with its counts, video, sound, place and tagged accounts.
51. November 4, 2026Added

    ## LinkedIn

    [LinkedIn Profile API](https://socialtap.dev/docs/reference/linkedin/profile/index.md), [LinkedIn Post API](https://socialtap.dev/docs/reference/linkedin/post/index.md), [LinkedIn Company and People Search API](https://socialtap.dev/docs/reference/linkedin/search_profiles/index.md), [LinkedIn Post Search API](https://socialtap.dev/docs/reference/linkedin/search_posts/index.md)

    A new platform. `GET /v1/linkedin/profile` reads a company, school or showcase Page, or a member's profile, from its link. `GET /v1/linkedin/post` reads a public post or article. `GET /v1/linkedin/search_profiles` finds Pages and members through a public web search, with `account_type` choosing which, and `GET /v1/linkedin/search_posts` finds public posts, `#tags` included. `fill=true` on either search adds each result's full record.
52. November 4, 2026Added

    ## LinkedIn Ad Library

    [LinkedIn Ad Library Ad API](https://socialtap.dev/docs/reference/linkedin/ad/index.md), [LinkedIn Ad Library Search API](https://socialtap.dev/docs/reference/linkedin/search_ads/index.md)

    `GET /v1/linkedin/ad` reads one ad of LinkedIn's public Ad Library from its link or ID, in every format the library lists: the advertiser and who paid, text, media, every carousel slide, a message ad's sender and buttons, a job's or event's details. Ads shown in the EU and Brazil add their run dates, impressions range, share of impressions by country and targeting.

    `GET /v1/linkedin/search_ads` searches the library by words in the ad, an advertiser's name or exact company ID, or who paid, within countries and a window of days, newest or oldest first, and returns each ad's card; a result's ID goes to `linkedin.ad` for the rest.
53. November 4, 2026Added

    ## Linkme pages

    [Linkme Profile API](https://socialtap.dev/docs/reference/linkme/profile/index.md)

    `linkme.profile` returns a public Linkme page as a profile, from its name or link: the account's ID, name, bio, picture, logo and verified badge, its total followers, every social icon with the handle and followers Linkme holds for it, every link in its list with its title, section and carousel, each destination of a music link, the links behind an adult notice, and the emails, phone numbers and addresses it publishes.
54. November 4, 2026Fixed

    ## Partial answers are no longer replayed from the cache

    An answer carrying a `partial_data` warning is no longer stored in the cache at the edge, on any endpoint. Before, a request with `max_age` could be answered, and charged nothing, from an earlier partial answer for as long as `max_age` allowed, with the warning still on it. Now the next request fetches again, so it can get the whole answer.
55. November 4, 2026Added

    ## Snapchat

    [Snapchat Profile API](https://socialtap.dev/docs/reference/snapchat/profile/index.md), [Snapchat Spotlight API](https://socialtap.dev/docs/reference/snapchat/spotlight/index.md), [Snapchat Comments API](https://socialtap.dev/docs/reference/snapchat/comments/index.md)

    Snapchat is a new platform. `snapchat.profile` returns a public account from its username or link: its name, bio, picture, subscribers, category, recent Story, saved Stories with their Snaps, Spotlights and related accounts. `snapchat.spotlight` returns one Spotlight from its link or ID: its video or image, caption, transcript, counts, sound, Lens, place and author. `snapchat.comments` walks a Spotlight's comments by cursor, with each comment's text, author, likes and reply count, and `comment_id` returns a comment's replies.
56. November 4, 2026Fixed

    ## A regional lang works on speech-to-text transcripts

    On the transcript endpoints that pass `lang` to speech-to-text, a `lang` with a region (`pt-BR`, `zh-TW`) now reaches it as its language (`pt`, `zh`), and a language it lists under another code is found there (`nb`, `iw`, `jv`, `cmn`, `fil`, `zh-yue`). Before, each failed with `upstream_error` after retries and was not charged. A `lang` speech-to-text doesn't have (`zu`) now answers `invalid_input` on `lang` at once, instead of the same `upstream_error`. On `tiktok.transcript`, where the language hint is TikTok's own and not yours, speech-to-text now detects the language when it doesn't have TikTok's, instead of failing.
57. November 4, 2026Fixed

    ## TikTok links with a percent-encoded @ are accepted

    A TikTok link written with `%40` in place of `@` (`https://www.tiktok.com/%40nasa/video/…`), as some apps copy it, now answers like the plain link. Before, it answered `invalid_input`.
58. November 3, 2026Added

    ## Facebook Pages, groups, comments, Marketplace, Events and the Ad Library

    [Facebook Profile API](https://socialtap.dev/docs/reference/facebook/profile/index.md), [Facebook Profile Posts API](https://socialtap.dev/docs/reference/facebook/posts/index.md), [Facebook Reels API](https://socialtap.dev/docs/reference/facebook/reels/index.md), [Facebook Profile Photos API](https://socialtap.dev/docs/reference/facebook/photos/index.md), [Facebook Engagement API](https://socialtap.dev/docs/reference/facebook/engagement/index.md), [Facebook Comments API](https://socialtap.dev/docs/reference/facebook/comments/index.md), [Facebook Comment Replies API](https://socialtap.dev/docs/reference/facebook/replies/index.md), [Facebook Group API](https://socialtap.dev/docs/reference/facebook/group/index.md), [Facebook Group Posts API](https://socialtap.dev/docs/reference/facebook/group_posts/index.md), [Facebook Marketplace Listing API](https://socialtap.dev/docs/reference/facebook/listing/index.md), [Facebook Marketplace Search API](https://socialtap.dev/docs/reference/facebook/search_listings/index.md), [Facebook Marketplace Location Search API](https://socialtap.dev/docs/reference/facebook/search_places/index.md), [Facebook Event API](https://socialtap.dev/docs/reference/facebook/event/index.md), [Facebook City Events API](https://socialtap.dev/docs/reference/facebook/place_events/index.md), [Facebook Ad Library Ad API](https://socialtap.dev/docs/reference/facebook/ad/index.md), [Facebook Ad Library Advertiser Ads API](https://socialtap.dev/docs/reference/facebook/ads/index.md), [Facebook Ad Library Advertiser Search API](https://socialtap.dev/docs/reference/facebook/search_advertisers/index.md), [Facebook Ad Transcript API](https://socialtap.dev/docs/reference/facebook/ad_transcript/index.md)

    Facebook now covers public Pages and profiles (`profile`, `posts`, `reels`, `photos`, `engagement`), comments and their replies (`comments`, `replies`) and public groups (`group`, `group_posts`). Facebook Marketplace, Facebook Events and the Facebook Ad Library are listed as their own sections, on the same `/v1/facebook/` paths: `listing`, `search_listings` and `search_places`; `event` and `place_events`, which return the new `event` resource; `ad`, `ads`, `search_advertisers` and `ad_transcript`.

    `facebook.search_ads` results now carry `platform_specific.facebook`, and a branded content ad's advertiser no longer gets the creator's link and avatar.
59. November 3, 2026Fixed

    ## Facebook photo posts

    [Facebook Post API](https://socialtap.dev/docs/reference/facebook/post/index.md)

    `GET /v1/facebook/post` began returning some photo posts as `type: "link"` with an empty `media` array, after Facebook started sending a link alongside the photo. They come back as `type: "image"` with the photo in `media` again.
60. November 3, 2026Changed

    ## Free filtered pages on Google ad lists, individuals' election registrations, account IDs for agents

    [Google Ads Transparency Center Advertiser Ads API](https://socialtap.dev/docs/reference/google/ads/index.md), [Google Ads Transparency Center Ads by Website API](https://socialtap.dev/docs/reference/google/search_ads/index.md), [Google Ads Transparency Center Advertiser API](https://socialtap.dev/docs/reference/google/advertiser/index.md)

    `google.ads` and `google.search_ads` no longer charge for a page our own `since`/`until` filter emptied (a `since` more than a year back, or `until` without `since`, which Google cannot filter on): those pages are free, as on `rumble.posts`.

    `google.advertiser` now returns an individual's own registration with an election regulator in `platform_specific.google.election.regulatory_ids`, as type `us_individual`.

    The MCP tools' concise results now carry each account's `id` beside its `username` (an ad's advertiser, a post's or comment's author, a suggestion's profile, …), on every platform: Google advertisers have no username, so the ID is how an agent names them.
61. November 3, 2026Added

    ## Komi page

    [Komi Page API](https://socialtap.dev/docs/reference/komi/page/index.md)

    `GET /v1/komi/page` returns a creator's Komi page from its `<name>.komi.io` link, a deep link on that host, the host alone, or the bare username: the name, bio and pictures, the row of social and contact links, and every item on the page in its order, including links, products, videos, music releases, podcasts and events, each with its group and section.

    Komi is a new platform on the API. A name no page has answers `not_found`; a page Komi has switched off answers `private_or_unavailable`.
62. November 3, 2026Added

    ## Lnk.Bio pages

    [Lnk.Bio Profile API](https://socialtap.dev/docs/reference/linkbio/profile/index.md)

    `linkbio.profile` returns a public Lnk.Bio page as a profile, from its name or link: the account's ID, name, bio, picture and verified badge, every link in its list, including those the page only loads as a visitor scrolls, its social icons by name, the emails and phone numbers it publishes, the place it shows on a map, its own domain, and how many links it holds.
63. November 3, 2026Added

    ## Linktree profiles

    [Linktree Profile API](https://socialtap.dev/docs/reference/linktree/profile/index.md)

    Linktree is a new platform. `GET /v1/linktree/profile` returns a public page from its username or any link to it: its ID, title, bio, avatar, banner, verification badge, country and join date, every link in page order with its type, group, position and thumbnail, and the page's social icons and listed email address.

    A sensitive-content or age label is a click-through, so its link keeps its URL and names the label in `gates`. A link behind a passcode, password or NFT lock has its label and a null `url`. A name nobody has is `not_found`, and a page Linktree removed is `private_or_unavailable`.
64. November 3, 2026Added

    ## Pillar pages

    [Pillar Page API](https://socialtap.dev/docs/reference/pillar/page/index.md)

    `GET /v1/pillar/page` returns a public Pillar link-in-bio page from its name, its link or the creator's ID: the creator's profile, the social accounts and links on the page in page order with each link's click count, what the page sells, its featured videos, the email addresses it lists, and the audience its media kit shows, as an exact total and per account.

    Only what the page shows is returned: links and products the creator hid, and courses never published, are left out.
65. November 3, 2026Fixed

    ## TikTok ad partial takedowns

    [TikTok Ad Library Ad API](https://socialtap.dev/docs/reference/tiktok/ad/index.md)

    `GET /v1/tiktok/ad` could report an ad TikTok took down in some countries as not removed, because TikTok states such a takedown in some languages and not others. The endpoint now checks a second language: `is_removed`, `removal_reasons` and `removal_country_codes` report the takedown when either language states it, with the reasons in German when only German does.

    If that second check fails, `is_removed` is `null` with a `partial_data` warning instead of `false`.
66. November 3, 2026Added

    ## TikTok hashtag search

    [TikTok Hashtag Search API](https://socialtap.dev/docs/reference/tiktok/search_hashtags/index.md)

    `GET /v1/tiktok/search_hashtags` returns the TikTok hashtags a public web search finds for your words: each tag's name and link, with its post count and description when the search index shows them. `fill=true` adds each hashtag's full, current TikTok record to the same response.
67. November 3, 2026Changed

    ## TikTok account search refuses queries with nothing to find

    [TikTok User Search API](https://socialtap.dev/docs/reference/tiktok/search_profiles/index.md)

    `GET /v1/tiktok/search_profiles` now answers `400 invalid_input` to a query made only of exclusions (`-barber`, `-"wine bar"`), which used to return and bill a page of unrelated accounts. Send at least one word to search for.

    A result's `bio` is now null when the search index's text is not the account's description (a video's caption, the page's links or its video counts), and a `display_name` is no longer read from counts. `fill=true` returns the account's record, with its bio. A result found through a link by numeric ID now has its real `username`.
68. November 3, 2026Added

    ## TikTok sound search

    [TikTok Sound Search API](https://socialtap.dev/docs/reference/tiktok/search_sounds/index.md)

    `GET /v1/tiktok/search_sounds` returns the TikTok sounds a public web search finds for your words, in one paged list, each with the title, author and video count the search index shows; `fill=true` adds each sound's full TikTok record from `tiktok.sound`.
69. November 3, 2026Added

    ## TikTok Top search

    [TikTok Top Search API](https://socialtap.dev/docs/reference/tiktok/search_top/index.md)

    `GET /v1/tiktok/search_top` returns the TikTok accounts, videos, photo posts, hashtags and sounds a public web search finds for your words, in one paged list. Each result names its type and holds what the search index shows of it; `fill=true` adds each result's full TikTok record from its own lookup.
70. November 3, 2026Added

    ## Truth Social

    [Truth Social Profile API](https://socialtap.dev/docs/reference/truthsocial/profile/index.md), [Truth Social Posts API](https://socialtap.dev/docs/reference/truthsocial/posts/index.md), [Truth Social Post API](https://socialtap.dev/docs/reference/truthsocial/post/index.md)

    Truth Social is a new platform. `GET /v1/truthsocial/profile` returns a public account by its handle, link or ID, `GET /v1/truthsocial/posts` the Truths and ReTruths it posted, and `GET /v1/truthsocial/post` one post by any of its links or its ID.
71. November 3, 2026Added

    ## X (Twitter) posts

    [X (Twitter) Post API](https://socialtap.dev/docs/reference/x/post/index.md)

    `GET /v1/x/post` returns a public X (formerly Twitter) post by any x.com or twitter.com link or bare ID: its whole text, long posts and X Articles included, every photo, video and GIF with all its renditions, exact view, like, repost, quote, reply and bookmark counts, the post it quotes or replies to, its poll with exact votes, its card, community and edit history, and the author's counts under `platform_specific.x`.
72. November 3, 2026Added

    ## X (Twitter) profiles

    [X (Twitter) Profile API](https://socialtap.dev/docs/reference/x/profile/index.md)

    `GET /v1/x/profile` returns a public X (formerly Twitter) account by username, numeric user ID or any x.com or twitter.com profile link (Follow-button and intent links included): name, bio with its links written out, website, location, join date, profile picture and header, its check and what kind (blue, business or government), affiliate badge, professional category, whether it is protected, and exact follower, following and post counts, with X's own media, like and list counts, pinned posts and identity verification under `platform_specific.x`.
73. November 3, 2026Added

    ## X (Twitter) Community search

    [X (Twitter) Community Search API](https://socialtap.dev/docs/reference/x/search_communities/index.md)

    `GET /v1/x/search_communities` returns the X Communities a public web search finds for your words, in one paged list: each community's link, with what the search index shows of its title, description and member count. `fill=true` adds each community's full, current record from `x.community`.
74. November 3, 2026Added

    ## X (Twitter) hashtag search

    [X (Twitter) Hashtag Search API](https://socialtap.dev/docs/reference/x/search_hashtags/index.md)

    `GET /v1/x/search_hashtags` returns the X hashtags a public web search finds for your words, in one paged list: each tag's name, spelled as X's page spells it, and its link. Use it to discover a topic's hashtags and their spellings.
75. November 3, 2026Added

    ## X (Twitter) post search

    [X (Twitter) Post Search API](https://socialtap.dev/docs/reference/x/search_posts/index.md)

    `GET /v1/x/search_posts` returns the X posts a public web search finds for your words, a #hashtag or an @handle, in one paged list: each post's link, author and exact publish time, with what the search index shows of its text. `since` and `until` hold a date window to each post's exact time. `fill=true` adds each post's full, current record from `x.post`.
76. November 3, 2026Added

    ## X (Twitter) account search

    [X (Twitter) User Search API](https://socialtap.dev/docs/reference/x/search_profiles/index.md)

    `GET /v1/x/search_profiles` returns the X accounts a public web search finds for your words, in one paged list: each account's username and profile link, with what the search index shows of its display name, bio and counts. `fill=true` adds each account's full, current X profile from `x.profile`.
77. November 2, 2026Changed

    ## Ad libraries listed on their own

    [TikTok Ad Library Ad API](https://socialtap.dev/docs/reference/tiktok/ad/index.md), [TikTok Ad Library Search API](https://socialtap.dev/docs/reference/tiktok/search_ads/index.md), [TikTok Top Ads API](https://socialtap.dev/docs/reference/tiktok/top_ads/index.md), [Facebook Ad Library Search API](https://socialtap.dev/docs/reference/facebook/search_ads/index.md)

    The docs, the API pages and the playground now list **TikTok Ad Library** and **Facebook Ad Library** on their own, next to TikTok and Facebook, with their own pages. The TikTok Ad Library holds `tiktok.ad`, `tiktok.search_ads` and `tiktok.top_ads`; the Facebook Ad Library holds `facebook.search_ads`.

    Nothing changes for API callers: paths, parameters and responses are the same, including `data.platform`. The OpenAPI document tags these operations "TikTok Ad Library" and "Facebook Ad Library" instead of "TikTok" and "Facebook", so a client generated from it by tag may group them under a new class.
78. November 2, 2026Added

    ## Google Ads Transparency Center ad

    [Google Ads Transparency Center Ad API](https://socialtap.dev/docs/reference/google/ad/index.md)

    `GET /v1/google/ad` returns one ad from Google's Ads Transparency Center from its link, the old political ads report's link or its creative ID: the advertiser with its verification badge, who paid, the format, each image variation (or, for a local text ad, its headline, description and link), when the ad was first and last shown and for how many days, the countries it ran in, and the topic Google labels it with. Ads shown in Europe and election ads also carry Google's impressions per country and per Google service and the kinds of audience criteria used; election ads their spend range and their age, gender and location targeting, with Google's names for the locations.

    Google is a new platform; its Ads Transparency Center is listed as a section of its own.
79. November 2, 2026Added

    ## Google Ads Transparency Center advertiser ads

    [Google Ads Transparency Center Advertiser Ads API](https://socialtap.dev/docs/reference/google/ads/index.md)

    `GET /v1/google/ads` lists an advertiser's ads from Google's Ads Transparency Center by its advertiser ID or page link, most recently shown first: each ad's format, image, exact first and last shown times, days shown, and the advertiser's name and verification badge. Filter by country, format, Google service (Search, YouTube, Maps, Play, Shopping) and the days shown, or list only the advertiser's election ads with their countries, impressions and spend, sortable by impressions.
80. November 2, 2026Added

    ## Google Ads Transparency Center advertiser search

    [Google Ads Transparency Center Advertiser Search API](https://socialtap.dev/docs/reference/google/search_advertisers/index.md)

    `GET /v1/google/search_advertisers` finds the advertisers of Google's Ads Transparency Center whose name matches a query, every match rather than the search box's first few: each advertiser's ID, name, country, verification badge and ad count as Google's range. Filter to the advertisers whose ads ran in one country, with their ad counts there, and sort by Google's order or most ads first.
81. November 2, 2026Added

    ## Google Ads Transparency Center search suggestions

    [Google Ads Transparency Center Search Suggestions API](https://socialtap.dev/docs/reference/google/search_suggestions/index.md)

    `GET /v1/google/search_suggestions` returns what the Ads Transparency Center's search box suggests for a query, in its order: the matching advertisers, each with its ID, name, country, verification badge and ad count as Google's range, then the websites whose ads the center lists, each as its bare domain. Suggestions gain the `website` type and Google's own fields, `platform_specific.google.country_code` and `ads`. Filter to one country, and page past what the box shows.
82. November 2, 2026Added

    ## Instagram audio

    [Instagram Audio API](https://socialtap.dev/docs/reference/instagram/sound/index.md)

    `GET /v1/instagram/sound` returns one Instagram audio, a licensed song or a creator's original audio, from its audio link or ID: title, artist and the artist's or creator's Instagram account, length, cover art, the full audio file, its Spotify link, the exact number of reels using it, and whether Instagram marks it explicit, trending or shows its lyrics. A song asked for by its audio asset ID is answered under its audio page's ID.

    The Instagram sound schema gains `platform_specific.instagram.is_lyrics_shown`.
83. November 2, 2026Changed

    ## Reddit comment threads in full, and more Reddit sorts

    [Reddit Comments API](https://socialtap.dev/docs/reference/reddit/comments/index.md), [Reddit User Posts API](https://socialtap.dev/docs/reference/reddit/posts/index.md), [Reddit User Comments API](https://socialtap.dev/docs/reference/reddit/profile_comments/index.md)

    A walk of `reddit.comments` now returns the whole thread: the replies Reddit leaves behind a "more replies" link come on the following pages, right after the page that shows their parent comment, before the post's next top-level comments. `platform_specific.reddit.more_replies_count` still says how many each page left out.

    `reddit.comments` takes two more of Reddit's orders: `sort=controversial` and `sort=qa` (Q&A: the comments the post's author answered first). `reddit.posts` and `reddit.profile_comments` take `sort=controversial`, of all time or of Reddit's time filter that covers `since`, as `sort=popular` does.

    A caller who wants only the shown tree sends `replies=shown`: the post's comments with the replies Reddit shows under them, each comment's `more_replies_count` and url leading to the rest, at a fraction of the requests of the full tree.
84. November 2, 2026Changed

    ## Reddit IDs are fullnames everywhere

    [Reddit Post API](https://socialtap.dev/docs/reference/reddit/post/index.md), [Reddit Comments API](https://socialtap.dev/docs/reference/reddit/comments/index.md), [Reddit Video Transcript API](https://socialtap.dev/docs/reference/reddit/transcript/index.md), [Reddit Search API](https://socialtap.dev/docs/reference/reddit/search_posts/index.md), [Reddit Comment Search API](https://socialtap.dev/docs/reference/reddit/search_comments/index.md), [Reddit Subreddit API](https://socialtap.dev/docs/reference/reddit/subreddit/index.md), [Reddit Subreddit Posts API](https://socialtap.dev/docs/reference/reddit/subreddit_posts/index.md), [Reddit Subreddit Search API](https://socialtap.dev/docs/reference/reddit/search_subreddits/index.md), [Reddit User Posts API](https://socialtap.dev/docs/reference/reddit/posts/index.md), [Reddit User Comments API](https://socialtap.dev/docs/reference/reddit/profile_comments/index.md), [Reddit Engagement API](https://socialtap.dev/docs/reference/reddit/engagement/index.md)

    Every Reddit endpoint now writes IDs as Reddit's fullnames, the form Reddit itself uses for every kind: `t3_…` for a post, `t1_…` for a comment, `t2_…` for an account and `t5_…` for a subreddit. This applies to `id`, `post_id`, `parent_id`, `author.id`, `top_post_id`, `bottom_post_id` and `meta.input.id`. Account IDs already had their prefix; post, comment and subreddit IDs used to drop it.

    Post endpoints still take a post's bare ID (`z1c9z`) as well as its fullname (`t3_z1c9z`).

    If you stored bare IDs from these endpoints, strip the prefix before comparing (`t3_z1c9z` is `z1c9z`), or add it to what you stored. A comment, account or subreddit ID sent back as `url` gets an `invalid_input` that says what to send instead (a comment's permalink, a username, a subreddit's name): Reddit's public pages don't look those up by ID.
85. November 2, 2026Changed

    ## Reddit search post bodies and video types

    [Reddit Search API](https://socialtap.dev/docs/reference/reddit/search_posts/index.md)

    `GET /v1/reddit/search_posts` takes `include_body=true` to return each post's body and mentions, with an exact `type`, read from Reddit's search feed (on `newest`, `popular` and `most_comments`; the feed doesn't follow Reddit's relevance order). It makes a second upstream request per page at the same price.

    Without it, Reddit videos now read as `video` (with their poster in `media`) instead of `link`, and a type the results page can't confirm (a result without a preview, or a thumbs.redditmedia.com thumbnail) is listed in `approximate_fields`.
86. November 2, 2026Added

    ## TikTok effect

    [TikTok Effect API](https://socialtap.dev/docs/reference/tiktok/effect/index.md)

    `GET /v1/tiktok/effect` returns one TikTok camera effect from its effect link, its older sticker link or its ID: name, whether TikTok made it or an Effect House creator did, the creator's ID, handle, profile link, picture and secUid, the icon, when it was published, and TikTok's exact counts of the posts made with it and the views those posts drew.

    An ID TikTok knows no effect by, or a retired one, is `not_found`, checked against a second answer before it is given.
87. November 1, 2026Added

    ## Instagram engagement

    [Instagram Engagement API](https://socialtap.dev/docs/reference/instagram/engagement/index.md)

    `GET /v1/instagram/engagement` returns a public Instagram account's profile with its exact follower count, its latest posts, reels and carousels, and the engagement figures over them in one call: engagement rate per follower and per view (mean, median and spread), likes and comments per post, views per reel and their median, comment-to-like ratio, posting cadence, the mix of reels, photos and carousels, and the top and bottom post. Each post carries its own rate and how it compares with the account's typical post.

    The profile and every post are exactly what `instagram.profile` and `instagram.posts` return. Pinned posts and collabs another account published are flagged and left out of the figures. A private account comes back with its profile and posts unknown; an unknown account is `not_found`, an age-restricted one `private_or_unavailable`.
88. November 1, 2026Added

    ## SocialTap is live

    SocialTap returns public social media data from the major platforms through one API key and one JSON schema. [Browse every API](https://socialtap.dev/apis/index.md) to see what you can fetch today, or follow the [quickstart](https://socialtap.dev/docs/index.md) to make your first request.

    From here on, this page lists what changes for developers using the API: new endpoints and platforms, changes in behavior, deprecations with their sunset dates, and fixes you would notice. Subscribe with the [JSON Feed](https://socialtap.dev/changelog.json).
89. November 1, 2026Added

    ## TikTok engagement

    [TikTok Engagement API](https://socialtap.dev/docs/reference/tiktok/engagement/index.md)

    `GET /v1/tiktok/engagement` returns a public TikTok account's profile, its latest posts and the engagement figures over them in one call: engagement rate per follower and per view (mean, median and spread), views, likes, comments, shares and saves per post, median views, comment-to-like ratio, posting cadence, the mix of videos and photo posts, and the top and bottom post. Each post carries its own rate and how it compares with the account's typical post.

    The profile and every post are exactly what `tiktok.profile` and `tiktok.posts` return. Figures computed from counts TikTok rounds are listed in `approximate_fields`. A private account comes back with its profile and posts unknown; an unknown account is `not_found`.

---

[HTML version](https://socialtap.dev/docs/changelog/) · [Docs index for AI agents](https://socialtap.dev/llms.txt) · [All docs in one file](https://socialtap.dev/llms-full.txt)
