# 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.

[![apidojo](/blog/authors/apidojo.png)**Apidojo** *15+ years of experience in data retrieval.*](/blog/authors/apidojo/)

**29 September 2026** Published

**2 min** Read

![Cover card reading "Why geotagged TikTok posts arrive without a geotag"](/blog/covers/tiktok-location-provenance.png)

-   A TikTok location URL is a tag URL with a flag on it, not a separate place page.
-   The post records contain no geographic field of any kind.
-   Billing is per location either way, so one run per city costs exactly what one combined run costs.
-   Roughly twenty posts come free with every location query, which makes wide shallow sweeps very cheap.

## 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.

## The scrapers behind this

-   [TikTok Location Scraper Geo-tagged videos and creators for any TikTok location; 400–600 posts/sec $0.006 / location + $0.30 / 1K](/scrapers/tiktok-location-scraper/)

## 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.

1.  [TikTok Location Scraper, inputs and output](https://apify.com/apidojo/tiktok-location-scraper) apify.com

![apidojo](/blog/authors/apidojo.png)

## [Apidojo](/blog/authors/apidojo/)

15+ years of experience in data retrieval.

API Dojo is always ready for you. With 15+ years of experience, data acquisition has never been that easy. Cheapest prices with high availability.

-   🏯 15+ years of experience in data retrieval.
-   💰 Cheapest prices, qualified data.
-   ⚙️ High availability, extreme maintenance.
-   🐉 Hyper communicative, excellent support.

-   [apidojo.io](https://apidojo.io)

## More in this cluster

-   [TikTok scraping guides Pulling posts, comments, sounds and places from TikTok: which door each scraper goes in by, what a run costs, and what the output does not contain.](/blog/tiktok/)
-   [TikTok date windows that return nothing, and why TikTok Profile Scraper's since and until mean the opposite of what almost everyone assumes. Swap them and the run returns an empty dataset.](/blog/tiktok/tiktok-since-until/)
-   [Why your TikTok user run cost three queries getFollowers and getFollowing are both on by default, and each is its own charge on top of the profile lookup. An unconfigured run bills three times.](/blog/tiktok/tiktok-user-defaults/)
