Geonode logo

Unlimited TikTok scraper for AI agents.

Video pages, creator profiles, hashtag feeds, sound pages, TikTok Shop products and comment threads. Unlimited requests for one flat bill from $50/mo, no credits, and a blocked request is free.

Start 48-hour free trial

No card. Unlimited pages. 5 threads. Failed requests $0

Unlimited web scraper
01

Images

02

Title

  • Title
  • Condition
03

Price & bidding

  • Price
  • Bids
  • Time left
  • Watchers
04

Seller

  • Seller rating
  • Sold listings
05

Specifics & shipping

  • Item specifics
  • Shipping
  • Item location

JavaScript rendered, parsed to JSON or Markdown, and a fetch that fails after three retries is never billed

Call it on TikTok

curl -X POST "https://scraper.geonode.io/v1/extract" \
  -H "X-Api-Key: $GEONODE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "url": "https://www.tiktok.com/@khaby.lame/video/7215589135488388357",
  "formats": [
    "json",
    "markdown"
  ],
  "render_js": true,
  "proxy": {
    "country": "US"
  }
}'

You came for an TikTok scraper. The key opens everything.

100% first-pass success

you’re here

Video and caption: Caption text, Hashtags, Mentions, Sound name and artist, Post date, Video ID

Engagement rail: Like count, Comment count, Share count, Save (bookmark) count, View count, Repost count

Creator card: Username, Display name, Verified badge, Follower count, Following count, Total likes

Comment thread: Commenter handle, Comment text, Like count, Reply count, Posted date, Creator liked / pinned flag

Sound page: Sound title, Original or licensed, Video count using sound, Author, Duration, Top videos grid

TikTok Shop product card: Product title, Price, Sold count, Shop name, Rating, Affiliate commission label

One subscription, from $50 a month flat. Everything after the first line adds $0

The hard part is getting in. That's our part.

  • $50/moflat, priced by concurrency, not per request

  • 0credits, meters or per-page charges

  • $0for any TikTok request that still fails after 3 retries

  • 48 hfree trial on your own TikTok URLs

  • Cloudflare98%

  • Akamai97%

  • Imperva Incapsula97%

  • DataDome96%

  • PerimeterX / HUMAN95%

  • reCAPTCHA v395%

  • Kasada94%

  • hCaptcha93%

First-pass success by anti-bot vendor, measured by us over 30 days, so of course it flatters us. The 48-hour trial exists so you can count against your own URLs. Full benchmark

What unlimited changes for TikTok data

  • Sold-comps pricing

    Completed listings are the real price of anything. Pull them at scale and price with evidence.

  • Arbitrage sourcing

    Sweep categories for mispriced inventory continuously instead of when the credit budget allows

  • Demand research

    Bids, watchers and sell-through, across a whole category, on one flat bill

  • Collection tracking

    Every listing of the thing you care about, the moment it appears

Cheap is supposed to be the trade-off

  • Michael T.

    Switched from Bright Data. Same quality, fraction of the cost. Their wholesale model actually makes sense.

  • Kristina Halvorson

    Finally a proxy provider that actually feels built for developers

  • Edgar Weissnat

    We run multiple large-scale data collection pipelines across several regions, and proxy reliability has always been one of the biggest bottlenecks. After switching to Geonode we noticed two immediate improvements: connection stability and predictable pricing. Previously we had to constantly optimize traffic to avoid massive proxy bills. With Geonode’s wholesale pricing model we can focus on building products instead of worrying about proxy usage. Integration with our Python stack and Playwright automation was straightforward and took less than a day.

  • Gladys Paucek

    Best proxy infrastructure I've used. The MCP integration with our AI agents was seamless.

  • Gladys Paucek

    Finally something that doesn’t feel like enterprise sales software.

Pick your thread count. That's the only decision.

Nothing is metered. Plans price threads (how many requests run at once), and pages stay unlimited on every one. An TikTok page that needs an anti-bot bypass costs exactly what a plain page costs

Roughly what each plan clears in a month, by endpoint

Starter

2 threads

$50 /mo

~470K
~280K
~1.1M
~610K
~120K
~400K

Growth

5 threads

$100 /mo

Popular
~1.2M
~700K
~2.8M
~1.5M
~300K
~1M

Scale

25 threads

$400 /mo

~5.9M
~3.5M
~13.8M
~7.6M
~1.5M
~5M

Pro

100 threads

$1,250 /mo

~23.5M
~14M
~55M
~30M
~5.9M
~20M

Max

250 threads

$2,500 /mo

~59M
~35M
~137M
~76M
~15M
~50M

The 48-hour trial runs at five threads, no card. Custom terms past 250 threads.

Yeah, but...

We do not yet publish a benchmark number for www.tiktok.com, so there is no success rate on this page until our TikTok scraper has a full 30-day sample we are willing to stand behind. Video and profile pages open more consistently than comment threads and Shop cards, which TikTok guards more tightly, serves only in some regions and hides from any TikTok scraper it has fingerprinted, and we would rather say that than print a figure. Billing is the same regardless: a request that fails after three retries is never billed, on any plan, so a TikTok scraper request that returns a captcha costs nothing.

Single video pages with caption, sound, engagement counts and the creator card; creator profiles with follower, following and like totals plus the video grid; hashtag feeds and sound pages with the videos using them; TikTok Shop product cards and shop pages in regions where Shop exists; and comment threads with replies, paginated as deep as TikTok exposes them to a web client. Pass a www.tiktok.com, vm.tiktok.com or vt.tiktok.com link, including the short share links the app generates, and the TikTok scraper resolves the redirect and detects the page type. Private accounts, the For You feed and anything that needs a logged-in session are outside what the TikTok scraper reads.

Because the proxy is only half the problem. TikTok's web client signs every API request with X-Bogus and _signature values computed from the URL, the timestamp and a device fingerprint, and ties them to msToken and ttwid cookies issued to that device. A TikTok scraper that sends a clean request with the right IP but without a valid signature gets a 200 with an empty item list. Our TikTok scraper renders the page in a real browser session per request, lets TikTok's own client compute the signatures, and reads the resulting payload, so the signing scheme can change without your integration changing.

No, and it should not. TikTok serves different content, different counters and different features by region: TikTok Shop exists in the US, UK and several Southeast Asian markets but not in most of Europe, repost counts appear only in some locales, and a video can be available in its creator's country while showing as unavailable elsewhere. Pass a country code and the TikTok scraper routes through a residential IP there, so a hashtag feed pulled for Indonesia reflects what an Indonesian user sees. Without a country, TikTok scraper requests default to the US storefront and feed, which is the wrong baseline for a brand selling in Jakarta or Manila.

No request credits and no per-page meter. Plans are priced by concurrency, which is the number of requests in flight at once, from $50 a month. Run as many requests through that concurrency as you can, around the clock, for the same bill. A request that fails after three retries is not counted against anything.

Yes. Pass a country code and the request routes through a residential IP there, so marketplaces return local prices and currency, search engines return local results, and geo-restricted pages open. City and ASN targeting are available on the residential pool where a site is sensitive to it.

Typed JSON with the field table on this page, clean Markdown for feeding an LLM context window, or raw rendered HTML if you run your own parser. For pages without a dedicated parser you can pass a JSON schema and get AI-extracted fields back in that shape.

48 hours. Your worst TikTok URLs.

Five threads, no card, and the clock starts at your first API call. If it doesn’t earn the switch, don’t switch.