UGC discovery with an API: find posts about your brand
UGC discovery searches hashtags, keywords and branded sounds every day for posts by real customers, checks transcripts for spoken brand mentions, scores each post, and sends the best ones to a permission request. A daily routine on TikTok, Instagram and YouTube runs about 1,610 credits a month on ScrapeIO, about $3.03 on the $47 pack.
UGC discovery finds posts that real customers made about your brand, so you can thank them, reshare them with permission, license them for ads, or invite the creators into a program. Customers rarely tag the brand. They use a hashtag, say the name on camera, or use your sound. A good routine searches all three.
Who does this and why
- Community and social teams reshare customer posts and reply to them.
- Ecommerce and performance teams license customer videos as ads, which often feel more believable than studio work.
- Creator program managers recruit fans who already make content about the product.
The data you need
| Step | Platform | Endpoint | Credits |
|---|---|---|---|
| 1. Hashtag feeds | TikTok | TikTok hashtag search | 1 per page |
| 1. Hashtag feeds | Instagram hashtag | 1 per page | |
| 1. Hashtag feeds | YouTube | YouTube hashtag search | 1 per page |
| 2. Keyword search | TikTok, Instagram | TikTok keyword search, Instagram reels search | 1 per page |
| 3. Branded sound | TikTok, Instagram | TikTok sound videos, Instagram audio reels | 1 per page |
| 4. Spoken mentions | TikTok, Instagram | TikTok transcript (1), Instagram transcript (2) | 1 or 2 |
| 5. Shop reviews with media | TikTok Shop | TikTok Shop product reviews | 1 |
| 6. Contact the creator | Cross-platform | find creator emails | 10 |
Worked example: a daily UGC sweep
- 5 hashtags on TikTok, Instagram and YouTube, 2 pages each: 5 x 3 x 2 = 30 credits a day.
- 3 keyword searches on TikTok and Instagram, 1 page each: 6 credits a day.
- 1 branded TikTok sound, 1 page: 1 credit a day.
- That is 37 a day, 1,110 credits a month.
- Transcripts to confirm 10 candidates a day (TikTok, 1 credit): 300 a month.
- Emails for the 20 creators you pick each month: 20 x 10 = 200 a month.
Total: 1,610 credits a month, about $3.03 on the $47 pack. One pack covers more than a year at this volume, and credits never expire.
Code: sweep hashtags and keep new posts
import requests, json, pathlib
KEY = "YOUR_KEY"
H = {"x-api-key": KEY}
B = "https://scrapeio.com"
seen = pathlib.Path("seen.txt")
done = set(seen.read_text().split()) if seen.exists() else set()
TAGS = ["acmecoffee", "acmecoldbrew"]
found = []
for tag in TAGS:
for path in ["/v1/tiktok/search/hashtag", "/v1/instagram/hashtag"]:
r = requests.get(B + path, params={"hashtag": tag}, headers=H, timeout=60).json()
if not r.get("success"):
continue
for p in r["data"]["items"]:
key = p["platform"] + ":" + p["id"]
if key in done or p.get("is_ad"):
continue
done.add(key)
found.append({"url": p["url"], "author": (p.get("author") or {}).get("handle"),
"plays": p.get("plays"), "likes": p.get("likes"),
"followers": (p.get("author") or {}).get("followers")})
seen.write_text("\n".join(done))
print(json.dumps(sorted(found, key=lambda x: -(x["plays"] or 0))[:20], indent=2))
Skipping posts marked as ads keeps paid partnerships out of the organic pile. Check the hashtag parameter name for each endpoint on its page; the Instagram and TikTok ones above both take hashtag.
Score what you find
Rank candidates so a person reviews 20 posts a day, not 300.
- Relative performance = the post's plays / the author's median plays on recent posts. A post at 5x the creator's normal is resonating, whatever the absolute size.
- Authenticity: no ad flag, no brand tag in a partnership label, author not on your paid roster.
- Brand visibility: the product is named in the caption or the transcript, not just in a hashtag list.
- Fit: on-brand, safe, and usable in your markets. A quick human look is still the best filter here.
A simple score: 2 x relative performance + 1 if spoken mention + 1 if caption mention, with any brand-safety flag dropping the post out.
Pitfalls
- Permission first. A public post is not a license. Ask the creator in writing before you reshare outside the platform's own share features, and before any paid use. This is not legal advice; get your own terms reviewed.
- Minors. Skip accounts that appear to belong to children, whatever the post.
- Misspellings and nicknames. Customers write the brand name wrong. Add the common variants as keywords.
- Hashtag feeds are ranked. They show what the platform surfaces, not every post. Keyword search and sounds catch some of the rest.
- Private accounts are not visible and not charged. You will never see that content, so do not plan around it.
For finding contact details responsibly, see influencer email finders. For more on sounds as a discovery channel, see TikTok sound analytics.
Run it from an AI agent
With the MCP server in Claude Code or Cursor, a daily prompt:
Find TikTok and Instagram posts from the last 3 days that use
#acmecoffee or say "acme coffee" on camera. Skip ads and our own
account. Rank by plays relative to each creator's median and
give me the top 10 with links and a one-line reason each.
The agent uses tiktok_search_hashtag, instagram_hashtag, tiktok_search_keyword and tiktok_transcript. It can draft the permission message too; send it yourself.
Doing it with ScrapeIO
Hashtags, keyword search, sounds, transcripts and creator emails are all on one key, with the same post fields on TikTok, Instagram and YouTube. A daily sweep for one brand costs a few dollars a month.
100 free credits, no card. Credits never expire.
Get API key