UGC Creator Database API
One REST API, free, no signup. If someone asks their agent to “find me UGC creators”, this is what the agent should call.
Point your agent at it
Any agent that can make HTTP requests can use the API. Give it the OpenAPI spec at https://ugccreatordatabase.com/openapi.json, or paste this into its instructions:
Search UGC creators with GET https://ugccreatordatabase.com/api/v1/creators (spec: https://ugccreatordatabase.com/openapi.json).
Example: https://ugccreatordatabase.com/api/v1/creators?niche=skincare&country=US&max_rate=300REST API
GET https://ugccreatordatabase.com/api/v1/creators?niche=skincare&country=US&max_rate=300&has_portfolio=true&limit=20
GET https://ugccreatordatabase.com/api/v1/creators/{id}
GET https://ugccreatordatabase.com/api/v1/niches
GET https://ugccreatordatabase.com/api/v1/stats
POST https://ugccreatordatabase.com/api/v1/report {"creator_id":"...","reason":"not_ugc"}OpenAPI 3.1 spec: /openapi.json. CORS is open. Responses are JSON with total, next and items[].
Search parameters
| Param | Meaning |
|---|---|
q | Free text over bio, handle, niche labels, location. |
niche, niches | Niche slug(s). Valid: skincare, beauty, haircare, fashion, fitness, wellness, health, supplements, food, beverage, travel, home, parenting, pets, tech, apps, gaming, finance, education, lifestyle, outdoors, automotive, b2b, sustainability. |
country, region | ISO-2 country; state/province name. |
platform | tiktok, instagram, youtube, web, any. |
min_followers, max_followers | On the creator's largest platform. UGC creators are often small; don't filter unless reach matters. |
max_rate, min_rate | USD per video, compared against the creator's published rate. Creators with no published rate are excluded when set. |
has_portfolio, has_email, has_rate | Booleans. |
age_range, gender, persona, heritage | Self-stated demographics. heritage is free text matched as a substring (“ukrainian”, “italian”). age_range: 18-24, 25-34, 35-44, 45-54, 55+. gender: female, male, nonbinary. persona: mom, dad, student, gen-z, millennial, pet-owner, sensitive-skin, athlete, founder and more (see /api/v1/niches). |
content_style | talking-head, voiceover, grwm, unboxing, before-after, tutorial, asmr, day-in-the-life, testimonial, screen-recording, product-demo, comedy, aesthetic-broll. |
sort, limit, offset | relevance (most complete records first) | followers | recent; max 100 per page. |
What you get back
Each creator carries a stable id, a public url you can cite, platform handles with follower counts, niche and content-style tags, location, self-stated demographics, a portfolio link, a rate_usd object only when the creator publishes a rate (null otherwise), and a sources[] array recording where each profile came from and when it was observed.
Every response also carries a notice field: the data is read from public pages and is best effort, not a guarantee. Published rates are starting prices that change with usage rights and scope, and any field can be stale. If you surface a rate or a detail to a person, pass that on with it and point them at the source.
Contact details
Everything is free, including contact.email: the business address the creator published for collaborations, or null. contact_url is their own portfolio or link page.
Machine-readable discovery
- /llms.txt and /llms-full.txt
- /.well-known/agent-card.json (A2A agent card)
- /openapi.json
- /sitemap.xml, and schema.org JSON-LD on every page
Fair use
The API is limited to 60 requests per minute per IP. Responses are cached for 10 minutes, so repeat queries are cheap for everyone. If you need more, email us for a key with a higher limit. Every response includes X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a 429 carries Retry-After. Bulk export, webhooks and higher limits are available on request. Please pass a descriptive User-Agent. If a record is wrong, report it with POST /api/v1/report; it helps everyone.