I Pulled 10k TikTok Profiles Without Building a Scraper
How I pulled thousands of TikTok profiles and full post histories by handle, billed per result on Monid, without building or babysitting a scraper.

Copy this line to your agent to pull thousands of TikTok profiles without building a scraper.
set up https://monid.ai/SKILL.md and use apify /apidojo/tiktok-profile-scraper to pull profiles and posts by handle
You can pull thousands of TikTok profiles and their full post histories by handing a list of usernames to one endpoint, billed per result, without standing up a scraper of your own. I know because I did it: a text file of handles went in, clean structured rows came out, and I paid for the rows and nothing else. Monid is a pay-per-call data API marketplace: one key and one wallet reach hundreds of external data endpoints across scraping, enrichment, social data, and search, with the price shown before anything runs. This is the story of how a creator-research project I dreaded turned into an afternoon.
TL;DR
- I needed several thousand TikTok profiles for trend research and did not want to build a scraper, so I ran a handle list through one endpoint on Monid.
apidojo/tiktok-profile-scrapertakes ausernamesarray (orstartUrls) and returns each account plus its full post history: bio, verification, follower counts, and per-post views, likes, comments, shares, and bookmarks. Billed per result at a fraction of a cent (current prices at monid.ai/tools).- The fields I actually keep are the per-post engagement numbers and the audio metadata, because they tell me who is really watched and which sound is climbing.
- When one video needs subtitles or the file itself, I switch to a single-video endpoint. When I want a cheaper skim, TikHub has a per-call route.
- No proxies, no captcha solving, no parser to babysit when TikTok reshuffles its layout.
The scraper I almost built
The project was simple to describe and miserable to start. I wanted to study a slice of creators, a few thousand handles I had collected from hashtags and duets, and understand who was actually breaking out versus who just had an old follower count. That means real data: posting cadence, view distribution, the sounds people were reaching for.
My first instinct, the one I have learned to distrust, was to write the scraper myself. I have done it before. It always looks like a weekend and turns into a month. You need rotating proxies so TikTok does not rate-limit one IP into the ground. You need a way through the captcha walls that appear the moment you look automated. You write a parser against the current page shape, and then TikTok ships a layout change and your selectors return null at 2am. And somewhere in there an account you were logged into for the mobile API gets banned, and you start over. The data is public. Getting it reliably is the whole job, and it is a job I did not want.

So I checked whether I could skip the entire left side of that picture. I could.
Set up once
For agents
Grab an API key at app.monid.ai, then paste this to your agent and hand it the key:
set up https://monid.ai/SKILL.md
It learns the whole discover, inspect, run workflow itself. More details in the agent quickstart.
For humans
npm install -g @monid-ai/cli
monid keys add --label main --key <your-api-key>
More details in the CLI quickstart.
One handle list in, structured rows out
The endpoint that did the work is apidojo/tiktok-profile-scraper on Apify. Its input is exactly the shape my project already had. It takes a usernames array (paste the handles, drop the @ sign) or a startUrls array of profile links, plus a maxItems ceiling and optional since and until dates to bound the post history. That is it. No login, no cookie jar, no session I have to keep warm.
I started with ten handles I knew cold, so I could check the output against what the app shows me:
monid run -p apify -e /apidojo/tiktok-profile-scraper \
-i '{"usernames": ["zachking", "khaby.lame"], "maxItems": 200}'
# -> Run ID: 01HXYZ...
monid runs get -r 01HXYZ... -o profiles.json
# -> COMPLETED: each account plus its recent posts,
# billed per result
The numbers matched. Follower counts, view counts on the posts I spot-checked, the verification badges, all of it lined up with what I saw scrolling the app by hand. That is the check I always run before I trust a source, and it passed on the first try. A free monid inspect -p apify -e /apidojo/tiktok-profile-scraper shows the full schema and the current price before you spend anything, so I knew the shape of the bill before I committed to the whole list.
The fields I actually keep
The raw record is generous. Per account you get bio text, verification status, follower and following counts, and the total video count. Per post you get views, likes, comments, shares, and bookmarks, plus the timestamp, the hashtags, collaboration metadata, the video technical details (dimensions, duration, media URLs, covers), and the audio and song metadata. It is a lot, and most of it I dropped.
Two slices earned their place in my working table.
The first is per-post engagement, not the follower count. Followers are a vanity number that lags reality by months and survives long after an account goes quiet. Median views across the last twenty posts is the honest signal. Ranking my handle list by that one derived number surfaced a dozen creators with modest follower counts and enormous, consistent reach, which is exactly the profile I was hunting and exactly what a follower sort would have buried.
The second is the audio and song metadata. When the same track shows up under a cluster of climbing posts, that is a sound breaking out, often before the creators piling onto it realize it. I pulled the song field off every post, counted them, and had a ranked list of rising audio in an afternoon. That was a whole insight I did not plan for, sitting in a field I almost ignored.
When one video, or a cheaper skim, is the better buy
Full profile history is the right default for my research, but it is not always what you want, so I keep two neighbors in mind.
When a single video is the object of study, and I want the heavy assets (subtitles for language analysis, the cover, the actual video file), I reach for clockworks/tiktok-video-scraper. It returns far more per item and costs more per result to match, so I point it only at the handful of videos that earned the attention.
And when I only want a shallow skim of an account's recent posts, not the full history, TikHub's /api/v1/tiktok/app/v3/fetch_user_post_videos bills per call rather than per result, which can be the cheaper route for a light, one-account check. Picking between them is one free monid discover search away.
Scaling toward 10k without a bigger meeting
Here is the part that let me actually finish. Because this endpoint bills per result at a fraction of a cent, the cost scales with the rows I keep and nothing else. Ten thousand profiles, pulled at a bounded post count each, lands in the low tens of dollars, not a contract, not a seat, not a monthly minimum I would forget to cancel. I ran the first few hundred, confirmed the fields, then opened the list wider in batches, watching the wallet tick down in amounts I would not think twice about.
The maxItems ceiling is the dial that matters most for spend, since a per-result price multiplied by a deep post history is where a bill quietly grows. I set it to the post count my analysis needed and no higher. Current per-endpoint prices live at monid.ai/tools, and because Monid ships as an MCP server, I later handed the same job to an agent: "pull these handles, keep median views and top audio, flag anything unverified," and it ran the endpoint and handed back the table without me touching the CLI.
FAQ
Do I need a TikTok developer account or login? No. You integrate Monid once and fund one pay-as-you-go wallet. The provider on Apify owns the TikTok access, the proxies, and the parser that would otherwise break on you.
Can I pass usernames, or do I need profile URLs?
Either. apidojo/tiktok-profile-scraper takes a usernames array (drop the @) or a startUrls array of profile links, and you can bound the post history with since and until dates.
How is this priced?
Per result, at a fraction of a cent, always shown by monid inspect before anything bills. Ten thousand profiles at a bounded post count lands in the low tens of dollars. Every current price is at monid.ai/tools.
What about a single video's subtitles or file?
Switch endpoints. clockworks/tiktok-video-scraper returns subtitles, covers, and the video file for specific URLs, and TikHub has a cheaper per-call route for a shallow account skim.
Try it with your own handle list
Take the last list of TikTok handles you meant to research and never did. Inspect the endpoint, run ten of them, and check the follower and view counts against the app by hand. If they match, and they will, open the list wider in batches and let it scale. It costs pocket change to find out, at monid.ai.