How to Pull Regional, Non-English Content With a Social API (Brazil & Vietnam Examples)
A team building a viral-content search engine for Brazil hit a wall we hear about a lot: they'd query TikTok and Instagram, get a pile of global, English-leaning results, and none of it reflected what's actually trending in pt-BR. They assumed the data just wasn't there. It is, they were missing one parameter on one platform and using the wrong lever on the other.
Here's the honest breakdown of how regional content works per platform, with real results from Brazil and Vietnam.
TikTok: use the region parameter (this is the one people miss)
TikTok's search endpoints take a region parameter, and it makes a real difference. Set region=BR and you get Brazilian, Portuguese-language videos back. We ran the keyword search for musculacao (Portuguese for weight training) with region=BR and every result came back tagged with region: BR and caption language pt — real Brazilian fitness creators, not the global firehose.
const API = "https://api.sociavault.com/v1";
const HEADERS = { "x-api-key": "sk_live_your_key" };
async function searchTikTok(query, region) {
const res = await fetch(
`${API}/scrape/tiktok/search/keyword?query=${encodeURIComponent(query)}®ion=${region}`,
{ headers: HEADERS }
);
const json = await res.json();
return json.data?.search_item_list ?? [];
}
const results = await searchTikTok("musculacao", "BR");
for (const item of results) {
const v = item.aweme_info ?? {};
console.log(v.desc, "| region:", v.region);
}
Each result carries locale signals you can trust for filtering: aweme_info.region (the account/video region, BR in our test) and language fields like desc_language (pt). If you want to be strict about it, keep only the items where region matches your target, and you've got a clean pt-BR feed.
Hashtag search takes region too:
import requests
API = "https://api.sociavault.com/v1"
HEADERS = {"x-api-key": "sk_live_your_key"}
r = requests.get(f"{API}/scrape/tiktok/search/hashtag",
params={"hashtag": "musculacao", "region": "BR"}, headers=HEADERS)
for v in r.json().get("data", {}).get("aweme_list", []):
print(v.get("desc_language"), v.get("author", {}).get("region"))
Here the region shows up as author.region on each video, plus desc_language: pt. Same idea for Vietnam: swap in region=VN and Vietnamese-language content comes back. We confirmed the same behaviour on the shopping side, a TikTok Shop search with region=VN returned Vietnamese products priced in đồng (VND).
One honest nuance: region sets the market the search runs in, more like "search as if I'm in Brazil" than a hard geofence on every author. The default is US, which is exactly why an unfiltered query feels English-heavy. You'll see the obvious shift when you switch to a genuinely different market like BR, VN, or TH; results reorient to local accounts and local-language content. If you need certainty, filter on the region/language fields in the response rather than assuming every single item is in-country.
Instagram: there is no region parameter — the query is the lever
This is where the Brazil team went wrong. Instagram's public search does not expose a country or language filter. Passing region, country, or country_code does nothing, they're simply ignored.
So how do you get Brazilian content? Query in the language. Portuguese hashtags and keywords return Portuguese content, because that's what the term itself pulls. We ran a hashtag search for musculacao and got exactly what you'd expect: captions like "Maravilhosa de mais" and "Nasceu para isso! Confia," tagged #musculacao #academia. The language of your query is doing the geo-targeting for you.
async function searchInstagram(hashtag) {
const res = await fetch(
`${API}/scrape/instagram/search/hashtag?hashtag=${encodeURIComponent(hashtag)}`,
{ headers: HEADERS }
);
const json = await res.json();
return Object.values(json.data?.posts ?? {});
}
// Portuguese hashtags -> Portuguese content. The term is the filter.
const posts = await searchInstagram("musculacao");
To widen coverage without guessing terms, the Popular search endpoint returns a set of suggested related terms alongside its results. Feed those back into more hashtag searches and you build out a local vocabulary automatically (musculacao → academia → treino → dieta), which is far more effective on Instagram than hunting for a region flag that doesn't exist.
A practical recipe for a regional feed
- TikTok: run keyword and hashtag search with
region=BR(or your market), sort withsort_by=most-likedfor the viral cut, page through withcursor, and optionally hard-filter onregion/desc_language. - Instagram: seed with local-language hashtags, expand your term list via the Popular endpoint's suggestions, then rank the returned posts by likes and comments on your side.
- Both: dedupe by post ID before storing so you don't pay twice for the same item.
That combination is what turned the Brazil project around: TikTok carried the region filter they'd overlooked, and Instagram just needed Portuguese seed terms instead of a phantom country parameter.
What this can't do
- Instagram has no true geo-filter. You're relying on language as a proxy. A Portuguese caption from a creator in Portugal will show up alongside Brazilian ones; if you need to separate pt-PT from pt-BR you'll do it downstream, not via the API.
regionon TikTok is a market, not a passport check. It reorients results; it doesn't guarantee 100% of authors are physically in that country. Filter on the response fields if you need precision.- Language detection isn't perfect. Fields like
desc_languagesometimes come backun(undetermined) on captions that are just emoji or a sound name. Treat them as a strong hint, not gospel. - Coverage tracks what's public. You see what the platform surfaces publicly for that market, not a complete census of every post in the country.
For the exact request and response shapes, see the TikTok search API and keyword-search guides, and the Instagram hashtag search write-up. If you're specifically after Brazilian commerce, the TikTok Shop Brazil research guide goes deeper on the shopping side.
Frequently Asked Questions
How do I get TikTok content from a specific country?
Add region= to the keyword or hashtag search (e.g. region=BR, region=VN). The default is US, which is why unfiltered queries look English-heavy. Results reorient to that market, and each item carries a region field you can filter on.
Does Instagram have a country or language parameter?
No. Instagram's public search ignores region/country params. The way to get regional content is to search in the local language, Portuguese hashtags return Portuguese posts, Vietnamese terms return Vietnamese posts.
Will region=BR guarantee every result is from Brazil?
Not strictly. It sets the market the search runs in, so results skew heavily local, but it's not a hard geofence. If you need certainty, keep only results whose region/author.region matches your target.
How do I find the right local keywords for Instagram?
Start with obvious local-language hashtags, then use the Popular search endpoint, which returns suggested related terms. Feeding those back in expands your local vocabulary without guesswork.
Does this work for languages other than Portuguese?
Yes. The same approach applies to any market, set TikTok's region (VN, TH, MX, ID, etc.) and query Instagram in the target language. We verified Brazil (pt) and Vietnam (vi) directly.
Which fields tell me the language and region of a result?
On TikTok, look at region/author.region and desc_language/language_code. On Instagram there's no explicit region field, so you infer it from the caption language and the account.
Building a regional content feed? Start free with 50 credits (no card) and run the TikTok region=BR search against your own keywords to see the difference for yourself.
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.