TikTok Place / Location Scraper
Pricing
from $0.20 / 1,000 place videos
TikTok Place / Location Scraper
Get public TikTok videos tagged at any place from place links, IDs, or place names. Or get place details with address, category, rating, photos, and optional reviews. Each video row has views, likes, creator, music, and GPS coordinates.
Pricing
from $0.20 / 1,000 place videos
Rating
0.0
(0)
Developer
Maxime Dupré
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
📍 See what people post at any TikTok place
TikTok Location Scraper is for marketers, travel and food researchers, and local businesses who want to see what happens at a real place on TikTok. Add TikTok place links, place IDs, or place names. You get the public videos tagged at each place, with views, likes, creators, music, and the exact tagged place. Or you get the place details, such as address, category, rating, photos, and public reviews. You need no TikTok account, and you get clean rows that you can sort and export.
- Collect every public video tagged at a landmark, venue, or shop with this TikTok location scraper.
- Build a list of matching spots with addresses, categories, and ratings using a TikTok places scraper.
- Read star ratings, text, and photos from visitors with a TikTok place reviews scraper.
- Find hotels, restaurants, and other spots that offer bookings or deals with a TikTok deals scraper.
- Look up the branches of a chain or a type of shop in one country with a TikTok business locations scraper.
🎬 Place videos and place details from TikTok
You choose one of two row types for each run:
- Place videos: one row for each public video tagged at a place. Each row has the video ID and link, caption, hashtags, post date, length, cover image, and a direct video file link when TikTok gives one. It also has views, likes, comments, shares, and saves, the creator's profile with follower and total like counts when TikTok shows them, the music title and artist, and the tagged place with its address, city, and GPS coordinates.
- Places: one row for each place. Each row has the place name, link, address, city, country, category, subcategory, GPS coordinates, and the total number of TikTok videos tagged there. It also has the average star rating, review count, and photos when TikTok shows them. When you turn on reviews, each place row also lists its public reviews with rating, text, photos, author, like count, and date.
🚀 How to scrape a TikTok location
- Add TikTok place links or IDs, place names to search, or both.
- Pick Place videos or Places in Result type.
- Set how many rows you want in total, and how many videos or reviews you want for each place.
- Start the run. Rows show up in the dataset while the run works.
- Download your results as JSON, CSV, Excel, or another format, or read them through the Apify API.
⚙️ Input
Input fields
| Field | Type | What it does |
|---|---|---|
placeUrls | array of strings | TikTok place links, such as https://www.tiktok.com/place/Eiffel-Tower-22535796485551493, or place IDs, such as 22535796485551493. Add one per line. |
searchQueries | array of strings | Place names or keywords to search for on TikTok, such as a restaurant, a landmark, or a city. Add one per line. The form starts with Eiffel Tower filled in. |
maxItems | integer | The most rows to save in total. Leave it empty or use 0 to get all available results. The form starts with 20. |
resultType | string | Required. videos (Place videos) saves one row for each video tagged at a place. places (Places) saves one row for each place. The form starts with videos. |
maxVideosPerPlace | integer | Place videos only. The most videos to get for each place. Leave it empty or use 0 to get every video TikTok shows for the place. The form starts with 10. |
includeReviews | boolean | Places only. Adds public reviews to each place row. Default: false. Each review has its own charge. |
maxReviewsPerPlace | integer | The most reviews to get for each place, where available. Use 0 to get every review. Default: 20. It works only when includeReviews is on. |
country | string | Two-letter country code to search places in, such as US, FR, or JP. It applies only to searchQueries. Leave it empty to let TikTok choose. |
maxPlacesPerQuery | integer | How many matching places to take for each place name, best match first. Default: 1. The lowest value is 1. Use more for chains or common names. |
dealsOnly | boolean | Finds only places that offer bookings or deals on TikTok. It applies only to searchQueries. Default: false. |
You must add at least one place link, place ID, or place name. A value in the form that the form "starts with" is a prefill. It is not used when you leave the field out of an API call.
Example input
{"searchQueries": ["Eiffel Tower"],"maxItems": 20,"resultType": "videos","maxVideosPerPlace": 10,"includeReviews": false,"maxReviewsPerPlace": 20,"maxPlacesPerQuery": 1,"dealsOnly": false}
🧾 Output
Output fields
Each run saves one of two row shapes. recordType tells you which one a row is. A field is left out when TikTok does not show it.
Place video row
| Field | Type | What it does |
|---|---|---|
recordType | string | Always video for this row. |
id | string | TikTok ID of the video. |
url | string | Link to the video on TikTok. |
caption | string | Caption text of the video. |
hashtags | array of strings | Hashtags of the video, without the # sign. Empty when there are none. |
postedAt | string | Date and time when the video was posted, in ISO 8601 format. |
durationSeconds | number | Length of the video in seconds. |
coverUrl | string | Link to the cover image of the video. |
videoUrl | string | Direct link to the video file when TikTok gives one. The link can stop working after some time. |
viewCount | integer | Number of times the video was played. |
likeCount | integer | Number of likes on the video. |
commentCount | integer | Number of comments on the video. |
shareCount | integer | Number of times the video was shared. |
saveCount | integer | Number of times the video was saved. |
creator.id | string | TikTok ID of the creator account. |
creator.username | string | TikTok username of the creator, without the @ sign. |
creator.displayName | string | Display name of the creator. |
creator.url | string | Link to the creator profile on TikTok. |
creator.avatarUrl | string | Link to the creator profile picture. |
creator.isVerified | boolean | true when TikTok shows the creator as verified. |
creator.bio | string | Profile bio text of the creator. |
creator.followerCount | integer | Number of followers of the creator when TikTok shows it. |
creator.likeCount | integer | Total likes on all videos of the creator when TikTok shows it. |
music.title | string | Title of the music in the video. |
music.artist | string | Artist or author of the music. |
place.id | string | TikTok ID of the place the video is tagged at. |
place.name | string | Place name shown on TikTok. |
place.address | string | Street address of the place. |
place.city | string | City of the place. |
place.latitude | number | Latitude of the place in decimal degrees. |
place.longitude | number | Longitude of the place in decimal degrees. |
Example place video row
{"recordType": "video","id": "7689599259515030791","url": "https://www.tiktok.com/@melquinterooo/video/7689599259515030791","caption": "Acompañenme a ver esta triste historia 🫠🫠 #torreeiffel #paris #foryoupage #france #fyp ","hashtags": ["torreeiffel","paris","foryoupage","france","fyp"],"postedAt": "2026-09-25T22:12:35.000Z","durationSeconds": 15,"coverUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-alisg-p-0037/o0A8EiUvgrYBB8BAxnDa24EAAjlbC0nnAIiPd~tplv-tiktokx-origin.image?dr=9636&x-expires=1793332800&x-signature=gM4FINkxkxJpsU5lU4hYWvSAV9k%3D&t=4d5b0474&ps=13740610&shp=81f88b70&shcp=43f4a2f9&idc=useast5","videoUrl": "https://www.tiktok.com/aweme/v1/play/?faid=1988&file_id=5d951bed58f742d3b0309a0cc096f9a1&is_play_url=1&item_id=7689599259515030791&line=0&ply_type=2&pt=YXdlbWUud2ViLndlYmFwaSYvYXBpL3BvaS9pdGVtX2xpc3QvJjIwMjYxMDI4MDQzMDUwRjM1NjI2MTREMzlERTkwOTA2N0MmMTc5MzE2MTg1MCY0YmY4ODIxY2YzZmM&signaturev3=dmlkZW9faWQ7ZmlsZV9pZDtpdGVtX2lkLjBiMTQ0ZTM2OGI3OWRlODQ2ODQwZWJkYTU3OGJiZDZk&tk=tt_chain_token&video_id=v1c044g50000darf3i7og65juqielp1g","viewCount": 7400000,"likeCount": 766800,"commentCount": 7006,"shareCount": 5869,"saveCount": 17110,"creator": {"id": "6814515566536180741","username": "melquinterooo","displayName": "Mel","url": "https://www.tiktok.com/@melquinterooo","avatarUrl": "https://p16-common-sign.tiktokcdn-us.com/tos-maliva-avt-0068/7334025623674978309~tplv-tiktokx-cropcenter:1080:1080.jpeg?dr=9640&refresh_token=bd9a5b36&x-expires=1793332800&x-signature=g9zFQZ8YtyXDD%2F9oTcH4kEk%2Fjuw%3D&t=4d5b0474&ps=13740610&shp=a5d48078&shcp=81f88b70&idc=useast5","isVerified": false,"bio": "Lifestyle, Fitness & Travel \nArg 🇦🇷\n\n\n• IG @melquinteroo","followerCount": 54800,"likeCount": 1100000},"music": {"title": "Groove Token","artist": "Tom Webster"},"place": {"id": "42203861110571891","name": "Eiffel Tower","address": "43 Rue Rouelle, 75015 Paris, France","city": "Paris","latitude": 48.849872,"longitude": 2.289067}}
Place row
| Field | Type | What it does |
|---|---|---|
recordType | string | Always place for this row. |
id | string | TikTok ID of the place. |
name | string | Place name shown on TikTok. |
url | string | Link to the place page on TikTok. |
address | string | Street address of the place. |
city | string | City of the place. |
country | string | Country of the place. |
category | string | Main category of the place. |
subcategory | string | More exact category of the place. |
latitude | number | Latitude of the place in decimal degrees. |
longitude | number | Longitude of the place in decimal degrees. |
videoCount | integer | Total number of TikTok videos tagged at the place. |
rating | number | Average star rating of the place when TikTok shows it. |
reviewCount | integer | Total number of reviews of the place when TikTok shows it. |
photoUrls | array of strings | Links to photos of the place. Empty when TikTok shows none. |
reviews | array of objects | Public reviews of the place. Only there when includeReviews is on. Empty when TikTok shows no reviews. |
reviews.rating | number | Star rating the author gave, from 1 to 5. |
reviews.text | string | Text of the review. |
reviews.photoUrls | array of strings | Links to photos added to the review. Empty when there are none. |
reviews.authorName | string | Name of the review author shown on TikTok. |
reviews.authorAvatarUrl | string | Link to the profile picture of the review author. |
reviews.likeCount | integer | Number of likes on the review. |
reviews.createdAt | string | Date and time when the review was posted, in ISO 8601 format. |
Example place row with reviews
This example is shortened. The "..." values mark photos and reviews that were left out to keep it short.
{"recordType": "place","id": "22535865202508922","name": "Louvre Museum","url": "https://www.tiktok.com/place/Louvre-Museum-22535865202508922","address": "75001 Paris, France","city": "Paris","country": "France","category": "Outdoors and Attractions","subcategory": "Museum","latitude": 48.860611,"longitude": 2.337644,"videoCount": 230169,"rating": 4.9,"reviewCount": 22895,"photoUrls": ["https://p16-tiktok-poi-picture-sign-sg.ibyteimg.com/tos-alisg-i-0x5759trmt-sg/954768a278826fd4e7e7fd6562ff5f4a~tplv-0x5759trmt-image-origin-heic-v1.heic?rk3s=733ab7a5&x-expires=1824697851&x-signature=H31Uw1xpMigefEokffnrZN7T9jI%3D","https://p16-tiktok-poi-picture-sign-sg.ibyteimg.com/tos-alisg-i-0x5759trmt-sg/096f2a7d77d0cae93bef0949082154f2~tplv-0x5759trmt-image-origin-heic-v1.heic?rk3s=733ab7a5&x-expires=1824697851&x-signature=Vc7J9mknsDxfYm5yzv0eJImOZUU%3D","..."],"reviews": [{"rating": 5,"text": "As expected of a world-famous museum, the Louvre was super crowded.\nYou should definitely buy your Louvre tickets in advance!\nThe exhibits keep you completely captivated from start to finish.\nIf you’re visiting the Louvre, you definitely have to check out Musée de l'Orangerie too!","photoUrls": ["https://p19-comment-sign-sg.tiktokcdn.com/tos-alisg-i-zt8igodiya-sg/9818115caaa083e20a5f9b2652622cde~tplv-jj85edgx6n-image-origin.image?dr=8569&refresh_token=9b2d23df&x-expires=1824696000&x-signature=Fc577F7j%2FPyxEBQty0KpfuYydr4%3D&t=67a6c45e&ps=a0626fcd&shp=d057eb96&shcp=d057eb96&idc=my","..."],"authorName": "_i_quan","authorAvatarUrl": "https://p16-common-sign.tiktokcdn.com/tos-alisg-avt-0068/b0663f2477e5a52a69da1f1a5d1ab481~tplv-tiktokx-cropcenter:1080:1080.webp?dr=14579&refresh_token=e0e7baf2&x-expires=1793246400&x-signature=kvGAeg8AvMYthx35LHpCaPsQXTA%3D&t=4d5b0474&ps=13740610&shp=30310797&shcp=8047b050&idc=my","likeCount": 19,"createdAt": "2026-09-29T03:37:38.000Z"},"..."]}
💳 Pricing
This Actor uses pay-per-event pricing. You pay only for the place videos, places, and reviews it saves.
| Event | When you pay | Price |
|---|---|---|
| Place video | Each video row saved | $0.0002 ($0.20 for 1,000 videos) |
| Place | Each place row saved | $0.0009 on Free, Bronze, and Silver plans. $0.0008 on Gold, Platinum, and Diamond plans. |
| Review | Each review added to a place row | $0.0009 on Free and Bronze plans. $0.00075 on Silver. $0.00045 on Gold, Platinum, and Diamond plans. |
Reviews cost nothing when includeReviews is off. You pay only when a row is saved, so work that saves no row has no charge. Use maxItems, maxVideosPerPlace, and maxReviewsPerPlace to control your cost. When your run reaches its spending limit, the Actor stops saving rows. If the limit runs out in the middle of a place's reviews, that place row keeps only the reviews you paid for.
🔌 Integrations
You can connect this Actor to other apps and tools on Apify. Send results to Google Sheets, Slack, Zapier, Make, or your own webhook, or start runs on a schedule. You can also run it and read its dataset through the Apify API. This video shows how integrations work:
❓ FAQ
Can I get the GPS coordinates of each place?
Yes. Place rows have latitude and longitude. Place video rows have them inside place, for the exact place the video is tagged at.
What happens when I search a common name, like a coffee chain?
By default the Actor takes only the best match for each name. Set maxPlacesPerQuery higher to take more matches, best match first. Add country to search in one country only.
Can I get every video at a place, not just the first few?
Yes. Set maxVideosPerPlace to 0 and leave maxItems empty or at 0. You then get every video TikTok shows for the place.
Do I need a TikTok account, cookies, or a login?
No. The Actor reads public TikTok data only. It does not need your TikTok account.
Can I download the video files?
Each video row has a videoUrl link to the video file when TikTok gives one. The Actor does not store the files. The link can stop working after some time, so use it soon after the run.
Why is a field missing from some rows?
TikTok does not show every detail for every video, creator, or place. For example, a rating appears only when the place has one. A missing field means TikTok did not show it.
Can I get private or deleted videos?
No. The Actor gets only public videos and places that TikTok shows.
📝 Changelog
v0.0 (28-10-2026)
- Initial release.
🆘 Support
For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡
🔗 Related Actors
- TikTok Place Posts Scraper: get public TikTok posts from place links or IDs when you only need the videos.
- Instagram Location Posts Scraper: collect public Instagram posts tagged at a location to compare with TikTok.
- TikTok Search Scraper: search public TikTok videos or creators by keyword, such as a city or venue name.
- TikTok Hashtag Search Scraper: find hashtag ideas and stats for a place, such as #paris or #eiffeltower.
- TikTok Creator Analytics Scraper: look deeper into the creators who post at a place, with audience totals and recent posts.
Made with ❤️ by Maxime Dupré