TikTok Profile Videos API Scraper With Tagged Places
Pricing
from $5.99 / 1,000 results
TikTok Profile Videos API Scraper With Tagged Places
TikTok Profile Videos API Scraper with Tagged Places extracts profile videos, tagged locations, captions, hashtags, views, likes, comments, shares, timestamps, and creator data. Ideal for location-based content research, competitor analysis, and audience insights.
Pricing
from $5.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapier
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
TikTok Profile Scraper — Videos, Tagged Places and Claim Status
TikTok Profile Videos API Scraper With Tagged Places walks a creator's public video feed and, for every video that carries a location tag, attaches TikTok's own business record for that venue — address, city, opening hours, rating, photo count, and whether the place page is still unclaimed. Every response is structured JSON, ready to pass directly to an LLM, index into a vector store, or load into a spreadsheet for local lead generation. No TikTok account, cookie, or API key is used anywhere in the run.
What is TikTok Profile Videos API Scraper With Tagged Places?
TikTok Profile Videos API Scraper With Tagged Places is a profile-to-venue walker: give it one or more TikTok creator profiles, and it pages through each creator's public video feed, reading the location ("POI") that TikTok attaches to any video where the creator tagged a place. Where a place is found, the Actor makes one additional lookup per distinct venue against TikTok's own place record and adds rating, opening hours, price band, photo count, and — the field no output-only "profile" scraper carries — whether the venue's page has ever been claimed by its owner. Everything is read from logged-out, public TikTok surfaces; the input schema and the run itself require no TikTok account, login, or cookie.
- Walks a creator's video feed newest-first (cheap) or oldest-first (a full feed walk), controlled by
sortOrder - Reads the tagged place directly off the feed item at no extra request cost, controlled by
fetchPlaceTags - Looks up each distinct venue's business record — rating, hours, price band, claim status — controlled by
fetchPlaceBusinessRecord - Caches each place's business record per run, so ten videos filmed at one restaurant cost one lookup, not ten
- Can filter the dataset down to only the videos that tag a place, via
onlyVideosWithPlace - Escalates automatically from the platform IP to Apify datacenter and residential proxies when TikTok's WAF answers with a challenge page instead of data
🏪 What data can you get with TikTok Profile Videos API Scraper With Tagged Places?
Each dataset row is one video, carrying the full raw video object plus flattened, typed columns for engagement, the creator, and — where the creator tagged one — the venue.
| Result type | Extracted fields | Primary use case |
|---|---|---|
| Video record | id, url, desc / description, createTime / createTimeISO, scrapedAt, isPhotoPost, plus the complete raw video object (video.playAddr, video.downloadAddr, cover images) | Building a content or download pipeline per creator |
| Engagement | playCount, diggCount, commentCount, shareCount, collectCount (flattened from the raw stats block) | Ranking videos or creators by performance |
| Tagged place | place_id, place_name, place_address, place_city, place_city_code, place_country_code, place_category, place_type_name, place_type_name_medium, place_type_name_super, place_father_name, place_url | Turning a feed into a list of named, addressed venues |
| Venue business record | place_rating, place_rating_count, place_opening_hours, place_price_range, place_type_detail, place_highlight_tags, place_is_claimed, place_has_phone, place_photo_count, place_video_count | Qualifying a venue as a lead: is it rated, popular, and is anyone managing its page |
| Creator context | profile_username, profile_url, author (raw nested object: secUid, nickname, avatar, verified flag) | Attributing every row back to the creator that posted it |
| Sound | music (id, title, author, album, duration, cover art, original-sound flag) | Trend or sound-usage analysis across creators |
| Hashtags | challenges / cha_list (id, title, description, cover images) | Hashtag co-occurrence analysis |
Tagged places and venue business records
This is the field set that separates this Actor from a plain video or profile scraper. TikTok ships a poi object on any feed item where the creator tagged a location — no extra request needed to read it — and that gives place_id, place_name, a full street address, city, GeoNames city/country codes, venue category, and the parent place. For every distinct place id found, the Actor then calls TikTok's place-record endpoint once and adds place_rating, place_rating_count, place_opening_hours, place_price_range, highlight tags, place_photo_count, place_video_count, place_has_phone, and — the signal a lead-generation workflow actually needs — place_is_claimed. A venue with zero reviews returns null for both rating fields, never a fabricated 0.
{"has_place": true,"place_id": "7264234838123790123","place_name": "Viva Toro","place_address": "49 W 44th St, New York, NY 10036, USA","place_city": "New York","place_country_code": "6252001","place_type_name": "Mexican Restaurant","place_is_claimed": false,"place_rating": 4.5,"place_rating_count": 50,"place_opening_hours": "2:00 PM - 11:00 PM","place_has_phone": true,"place_photo_count": 8,"place_video_count": 228,"place_record_fetched": true}
Video engagement and creator details
Every row also keeps the base video record intact: play, like, comment, share, and save counts flattened onto the row (playCount, diggCount, commentCount, shareCount, collectCount), a human-readable createTimeISO timestamp alongside the raw unix createTime, and an isPhotoPost flag for photo-carousel posts that carry no playable video URL. The creator who posted the video is attached as profile_username and profile_url, plus the full raw author object (secUid, nickname, avatar images, verification flag), so engagement and venue data can be joined and ranked by creator in the same export.
Why not build this yourself?
TikTok does not publish a public query API that lets you list an arbitrary creator's videos or read the place a video tags — its own Developer API is scoped to content an app owner has connected through OAuth, not to any public profile you choose. Reading these pages the plain way (a bare HTTP session) runs into TikTok's WAF, which answers unrecognized clients with HTTP 200 and a small JavaScript challenge page instead of an error — so a naive scraper reports success while returning zero rows. Getting past that reliably takes a real browser to solve the challenge and mint session cookies, a process for re-warming that session every time it rots, and a proxy ladder to fall back on when an exit IP gets a reputation-gated refusal instead of data.
This Actor carries that engineering so you don't have to maintain it: a Playwright browser warms a TikTok session, curl_cffi replays subsequent requests against it, the session re-warms proactively before it rots, and the proxy tier climbs from none to Apify datacenter to residential based on the shape of the response body — never on its HTTP status code, since TikTok's dead surfaces all return 200. Building and maintaining that stack yourself is a real, recurring cost; running it as an Actor turns it into a single input form.
What is the difference between a TikTok profile scraper and a TikTok location (POI) scraper?
A TikTok profile scraper answers "who is this creator and what did they post" — followers, bio, video list, engagement. A TikTok location (POI) scraper answers a different question entirely: "which physical venues does this content point to." The two are easy to conflate because both start from the same input, a creator's profile, but a profile scraper stops at the video, while a POI scraper reads the poi block TikTok attaches to a tagged video and resolves it against TikTok's own place record.
The distinction matters now because TikTok's tagged-place feature turned creator content into a usable local-business signal: food, travel, and nightlife creators tag the restaurants, hotels, and bars they visit, and that tag carries an address, a category, and — critically — a claim flag showing whether the business itself has ever taken over its TikTok place page. A profile-only scraper never surfaces any of that.
TikTok Profile Videos API Scraper With Tagged Places returns both: the base video object from the feed listing, and, on every row where the creator tagged a place, the flattened place_* columns described above — in the same dataset row, not a separate export.
How to scrape TikTok with TikTok Profile Videos API Scraper With Tagged Places?
- Open TikTok Profile Videos API Scraper With Tagged Places on its Apify Store listing and click Try for free (or Start if you already have it saved).
- Enter one or more creator profiles in Creator profiles (
startUrls) — a full URL likehttps://www.tiktok.com/@devourpoweror a bare username, one per line. - Set Videos to check per creator (
maxVideos) and Feed walk direction (sortOrder); leave Read the tagged place on each video and Add the venue's business record on to get the full venue data. - Click Start. The run log prints the place found on each row as it is pushed, plus a place-coverage percentage in the run summary.
- Download the dataset as JSON, CSV, Excel, or XML from the Storage tab, or pull it programmatically through the Apify API.
How to run multiple queries in one job
startUrls accepts as many creator profiles as you want to paste in, one per line — there is no separate batch endpoint. Each profile is walked in turn in a single run, in the order supplied, and every video from every profile lands in the same dataset with profile_username and profile_url identifying which creator it came from, so a single run can cover an entire watchlist of food, travel, or nightlife creators.
⬇️ Input
The input schema exposes seven fields, grouped into creators to walk, venue extraction toggles, and the connection (proxy) settings.
| Parameter | Required | Type | Description | Example value |
|---|---|---|---|---|
startUrls | Yes | array of strings | TikTok profile URLs or bare usernames, one per line. | ["https://www.tiktok.com/@devourpower"] |
maxVideos | No | integer (default 10, min 0) | Videos to walk per creator. 0 means no cap — walk the whole feed. | 25 |
sortOrder | No | string enum: newest / oldest (default newest) | newest stops after the newest N videos (cheap). oldest walks the whole feed first because TikTok's own sort flag is a no-op, then returns the oldest N — slower and many more requests. | newest |
fetchPlaceTags | No | boolean (default true) | Reads the location tag on each video: place id, name, address, city, GeoNames codes, category, venue type, parent place. No coordinates or phone number exist in this payload. | true |
fetchPlaceBusinessRecord | No | boolean (default true) | For each distinct place found, reads TikTok's place record: rating, review count, opening hours, price band, venue type, highlight tags, photo count, video count, phone-on-file flag, and claim status. Cached per place within the run. | true |
onlyVideosWithPlace | No | boolean (default false) | Keeps only rows with a tagged place. Off by default because place tagging is all-or-nothing per creator — some creators never tag a location, and a run can legitimately return zero rows if this is on for the wrong creator. | false |
proxyConfiguration | No | object (proxy editor) | Optional. With no proxy set, the run starts on the platform IP and escalates to Apify datacenter, then residential, if TikTok's WAF challenges it. | {"useApifyProxy": false} |
{"startUrls": ["https://www.tiktok.com/@devourpower"],"maxVideos": 10,"sortOrder": "newest","fetchPlaceTags": true,"fetchPlaceBusinessRecord": true,"onlyVideosWithPlace": false,"proxyConfiguration": { "useApifyProxy": false }}
Common pitfall: turning onlyVideosWithPlace on before you know whether a creator tags places at all. Place tagging is all-or-nothing per creator in practice, so filtering a creator who never tags a location produces an empty dataset — check one creator with a small maxVideos first, confirm place_name is populated, and only then switch the filter on for a larger run.
⬆️ Output
Results are stored in the Apify dataset as one typed JSON object per video, with a consistent schema across every run — place columns are present (as null where absent) on every row, so the table never goes ragged whether or not a video tags a place. Export the dataset as JSON, CSV, Excel, or XML from the Storage tab, or fetch it through the Apify API.
Scraped results
[{"id": "7534091783624199454","url": "https://www.tiktok.com/@devourpower/video/7534091783624199454","desc": "unlimited tacos and mimosas in nyc","createTime": 1784649627,"createTimeISO": "2026-07-21T15:20:27Z","scrapedAt": "2026-07-29T11:04:02Z","playCount": 412300,"diggCount": 28714,"commentCount": 341,"shareCount": 1204,"collectCount": 8890,"isPhotoPost": false,"profile_username": "devourpower","profile_url": "https://www.tiktok.com/@devourpower","has_place": true,"place_id": "7264234838123790123","place_name": "Viva Toro","place_address": "49 W 44th St, New York, NY 10036, USA","place_city": "New York","place_city_code": "5128581","place_country_code": "6252001","place_category": "Restaurant","place_type_name": "Mexican Restaurant","place_father_name": "New York","place_url": "https://www.tiktok.com/place/x-7264234838123790123","place_rating": 4.5,"place_rating_count": 50,"place_opening_hours": "2:00 PM - 11:00 PM","place_price_range": "USD 20-30","place_is_claimed": false,"place_has_phone": true,"place_photo_count": 8,"place_video_count": 228,"place_record_fetched": true},{"id": "7531004412290921234","url": "https://www.tiktok.com/@devourpower/video/7531004412290921234","desc": "brunch spot of the summer","createTime": 1783822011,"createTimeISO": "2026-07-11T09:33:31Z","scrapedAt": "2026-07-29T11:04:05Z","playCount": 198420,"diggCount": 15332,"commentCount": 210,"shareCount": 604,"collectCount": 3021,"isPhotoPost": false,"profile_username": "devourpower","profile_url": "https://www.tiktok.com/@devourpower","has_place": true,"place_id": "7264234838123790123","place_name": "Viva Toro","place_address": "49 W 44th St, New York, NY 10036, USA","place_city": "New York","place_country_code": "6252001","place_type_name": "Mexican Restaurant","place_is_claimed": false,"place_rating": 4.5,"place_rating_count": 50,"place_record_fetched": true},{"id": "7519887744120033445","url": "https://www.tiktok.com/@devourpower/video/7519887744120033445","desc": "day in my life as a food creator","createTime": 1781912400,"createTimeISO": "2026-06-19T18:20:00Z","scrapedAt": "2026-07-29T11:04:09Z","playCount": 88110,"diggCount": 5203,"commentCount": 92,"shareCount": 140,"collectCount": 511,"isPhotoPost": false,"profile_username": "devourpower","profile_url": "https://www.tiktok.com/@devourpower","has_place": false,"place_id": null,"place_name": null,"place_is_claimed": null,"place_record_fetched": false}]
The second row shows a video that tags the same venue as the first (place_record_fetched: true from the in-run cache, at no repeat lookup cost) with fields trimmed for brevity; the third shows a video with no tagged place at all — has_place: false and every place_* field null, not omitted.
How can I use the data extracted with TikTok Profile Videos API Scraper With Tagged Places?
- Local lead-generation and marketing agencies: filter rows where
place_is_claimedisfalseand sort byplace_video_countorplace_photo_countto find venues with real TikTok exposure and nobody managing their page — a concrete pitch for outreach. - AI engineers and LLM developers: an agent issues a creator handle, the Actor returns structured JSON with venue and engagement fields already flattened, and the response is passed straight to the model as grounded context for a location- or trend-aware assistant.
- Market researchers: group rows by
place_city,place_country_code, orplace_type_nameto profile which venue categories a niche of creators favors, or compare tagged-place coverage across a set of competing creators. - Hospitality and venue marketers: track a venue's own
place_rating,place_rating_count, andplace_video_countacross the creators who tag it, to see how organic TikTok exposure is trending without visiting the place page by hand.
How do you monitor claim status and venue reputation over time?
Claim status and venue reputation are not static — a business can claim its TikTok place page at any time, rating and review counts move as new reviews land, and a venue's place_video_count climbs every time another creator tags it. Monitoring means running the same creator list on a schedule and diffing the output between runs rather than trusting a single snapshot.
The fields worth diffing between runs are place_is_claimed (did an unclaimed venue get claimed, or vice versa), place_rating and place_rating_count (is the venue's reputation moving), place_video_count and place_photo_count (is organic attention accelerating), and has_place at the creator level (did a creator start or stop tagging locations at all). A practical workflow: run the same list of food, travel, or nightlife creators on a recurring schedule, key each result by place_id, compare against the previous run's values for those fields, and alert whenever place_is_claimed flips or place_video_count jumps past a threshold you set.
This Actor has no built-in scheduler of its own; the run cadence is a platform feature. Set it up under the Actor's Schedules tab in Apify Console (or via the Apify API) to run on a recurring cadence and land each run's output in its own dataset for comparison.
Integrate TikTok Profile Videos API Scraper With Tagged Places and automate your workflow
TikTok Profile Videos API Scraper With Tagged Places works with any language or tool that can send an HTTP request to the Apify API — you are not limited to the Apify Console UI.
REST API with Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scrapier/tiktok-profile-videos-api-scraper-with-tagged-places").call(run_input={"startUrls": ["https://www.tiktok.com/@devourpower"],"maxVideos": 25,"sortOrder": "newest","fetchPlaceTags": True,"fetchPlaceBusinessRecord": True,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():if item.get("has_place"):print(item["place_name"], item["place_address"], item["place_is_claimed"])
Scheduled monitoring and delivery
The Actor itself has no built-in webhook or scheduling feature, but the Apify platform does: attach a Schedule to run it automatically on a recurring cadence, and configure a webhook on the run's succeeded event to push each run's dataset ID to your own endpoint the moment it finishes, instead of polling for completion.
⚖️ Is it legal to scrape TikTok places?
Yes — this Actor reads only public, logged-out TikTok pages: profile pages, the public video listing, and place pages that anyone can open in a browser without an account, and it uses no credentials or gated data anywhere in the run. Because tagged videos can include the names of real people alongside public business information, personal-data rules such as GDPR and CCPA may still apply to how you store and use rows that include creator or reviewer information, while the venue and business data itself is generally treated under terms-of-service and database-rights frameworks rather than personal-data law. Scraping for AI-training datasets and scraping for one-off operational monitoring carry different risk profiles and different retention expectations. Consult your legal team for commercial use cases involving bulk data storage.
❓ Frequently asked questions
Does TikTok Profile Videos API Scraper With Tagged Places extract tagged places and venue business records?
Yes. Any feed item where the creator tagged a location carries a poi block that is read at no extra request cost into the place_* columns, and each distinct place is then looked up once against TikTok's place-record endpoint for rating, hours, price band, and claim status. When a video has no tag, has_place is false and every place_* field is null.
How many videos does it return per creator?
Up to maxVideos (default 10), or the creator's entire public feed if maxVideos is set to 0. The feed pages through TikTok's own listing until the creator's back catalog ends, so the ceiling is that creator's real video count, not a cap the Actor imposes.
Do all creators tag places?
No — this is the single biggest thing to know before you rely on the output. Place tagging is documented in the Actor's own input schema as all-or-nothing per creator: a food creator can tag every video, while three unrelated creators tag none at all. Check one profile with a small maxVideos and confirm place_name comes back populated before scaling up or turning on onlyVideosWithPlace.
Can I get a venue's phone number or exact coordinates?
No. The business record exposes only place_has_phone, a boolean saying a phone number exists on the listing, never the number itself — and neither the tagged-place fields nor the business record include latitude or longitude among the data this Actor extracts. Geocode place_address yourself if you need map coordinates.
Why is place_rating null for some venues instead of zero?
Because TikTok reports a review score and count of zero for a venue with no reviews yet, and reporting that as a rating of 0 would misrepresent it as "rated zero." The Actor emits null for both place_rating and place_rating_count in that case, and only ever emits a number when TikTok's payload carries an actual score.
How does the Actor handle TikTok's anti-bot measures?
It never trusts an HTTP status code, since TikTok answers dead surfaces with 200 just like live ones. Instead it classifies every response by body shape — a real page, a JavaScript WAF challenge, or a 0-byte signed-endpoint refusal — re-warms a fresh browser session when the WAF challenges it, and escalates from the platform IP to an Apify datacenter proxy and then a residential proxy when a signed endpoint keeps refusing an exit IP.
What happens if TikTok blocks every proxy tier?
The run fails loudly instead of finishing green with an empty dataset. If no profile in the run produced a single row after every proxy tier and the in-browser fallback were tried, the Actor calls Actor.fail() with a status message explaining that TikTok's feed answered with no usable data from any exit tested.
Can I use it without managing proxies or TikTok credentials?
Yes. No TikTok login, cookie, or API key is ever required, and by default the Actor runs on Apify's own infrastructure and automatically climbs from the platform IP to Apify datacenter and residential proxies if it needs to — you only need to supply the creator profiles you want walked. Setting your own proxyConfiguration (including a fixed proxy country) is optional.
Does TikTok Profile Videos API Scraper With Tagged Places work with Claude, ChatGPT, and AI agent frameworks?
It is callable as a plain HTTP endpoint through the Apify API from any language or agent framework, so an agent can trigger a run, poll or await the dataset, and pass the resulting JSON — including venue and claim-status fields — to a model as grounded context before it answers.
How does it compare to other TikTok scrapers?
As observed on the Apify Store on 2026-07-30: khadinakbar's "TikTok Profile Scraper" and novi's "TikTok Profile Videos API" both return profile and video-level data but do not document a tagged-place, venue, or claim-status field in their listings; openclawai's multi-platform "TikTok, Douyin & Bilibili Scraper" covers more platforms and content types (comments, live rooms) but likewise lists no location or place-record fields in its published output schema. This Actor is narrower by design — creator videos and the venues they tag — and adds the place_is_claimed signal none of the three publish.
Can I control which proxy country the run uses?
Yes, through the standard proxyConfiguration proxy editor. If you pin a country, the Actor honors it on every proxy tier it climbs to; if you leave it unset, Apify picks the exit automatically, which the source notes as the more reliable default for this target.
Your feedback
Found a field that doesn't match what TikTok actually returns, or hit a creator this Actor mishandles? Open an issue from the Actor's Issues tab in Apify Console with the run URL attached — that's the fastest way to get a fix shipped.