Why geotagged TikTok posts arrive without a geotag
The output carries no latitude, no longitude, no place name and no location id. The geography was the question you asked, not part of the answer you got back, so on a multi-city run nothing tells you which row came from where. Run one location per job and stamp it yourself.

The place is the query, not a column
Ask TikTok Location Scraper what is being posted in New York and it will tell you. Ask the resulting dataset where those posts came from and it has no idea.
The output is a standard post record: the id and caption, views, likes,
comments, shares and bookmarks, the hashtags, a channel block with the
creator’s follower counts, the video and audio metadata, and a postPage
link. Every one of those fields describes the post. None describes the place.
On a single-location run that costs you nothing, because the answer is sitting in the input you submitted. It becomes a problem the moment you put a second URL in the list.
The URL is not what you would guess either
There is no separate place page on TikTok to copy a link from. A location is a tag URL carrying a flag:
https://www.tiktok.com/tag/newyork?location=true
Drop the ?location=true and you have an ordinary hashtag query, which
returns posts using the word as a topic rather than posts filed against the
address. Those are different sets and the difference is invisible in the
output.
The fix is free
Billing is per location query at $0.006, with roughly the first twenty posts included. That is true whether the locations arrive in one run or ten. So splitting a sweep costs nothing and buys you a labelled dataset:
def place_url(slug):
return f"https://www.tiktok.com/tag/{slug}?location=true"
rows = []
for slug in ("newyork", "miami", "austin"):
run = client.actor("apidojo/tiktok-location-scraper").call(
run_input={"startUrls": [place_url(slug)], "maxItems": 20}
)
for row in client.dataset(run.default_dataset_id).iterate_items():
rows.append({**row, "place": slug}) # the field the actor cannot give you
One extra key, added at ingest, and the comparison you wanted becomes possible.
What the free page is worth
Because the allowance is per location rather than per run, breadth is subsidised here in a way depth is not. Twenty cities scanned at their first page is twenty query fees and no item charges at all: twelve cents for four hundred posts.
A thousand posts from a single city, by contrast, costs the same query fee plus nine hundred and eighty item charges. Same actor, same price list, two very different shapes of answer.
If the question is “what is happening across this region”, the cheap sweep is also the better instrument. If it is “what is happening in this one place”, pay for the depth and skip the labelling problem entirely.
Questions people ask
Does TikTok Location Scraper return coordinates?
No. The documented output is an ordinary post record: id, title, engagement counters, hashtags, the creator's channel block, video and song metadata and a link to the post. There is no latitude, longitude, place name or location id anywhere in it.
What does a TikTok location URL look like?
It is a tag URL with a query flag: https://www.tiktok.com/tag/newyork?location=true. The flag is what makes TikTok treat the page as a place rather than a hashtag, and without it you are querying a topic instead of an address.
Can I scrape several locations in one run?
Yes, and the listing puts no cap on how many. But because no row names its place, a combined run gives you an unlabelled pile. Since billing is per location either way, running them separately costs the same and keeps the provenance.