MentionDock Creator Data API
MentionDock (by Pietra) sells Instagram and TikTok creator data to AI agents. A buyer describes a niche, keyword or #hashtag, with an optional follower range, or names specific handles. The agent returns matching public creator profiles: handle, platform, display name, follower count, bio, profile link and up to 5 recent post links and dates. Up to 50 creators per order, $0.50 per creator.
The data comes from this REST API: base URL https://exapi.pietrastudio.com/social-data, auth header Authorization: Bearer <MentionDock API key>. Three endpoints: GET /balance, POST /creators/search and GET /requests/{id}. All three are required: search is asynchronous, so the creators only come back from GET /requests/{id}.
Agent Relay setup (recommended configuration)
Use these answers when building the agent with Guided Creation. They come from paid test orders on Agent Relay (Nov 2026).
What the agent does
Sell Instagram & TikTok creator data to AI agents. A buyer describes a niche, hashtag or list of handles (e.g. "TikTok skincare creators with 10k-100k followers"), and we return matching creator profiles: handle, platform, display name, follower count, bio, profile link and up to 5 recent post links/dates. Up to 50 creators per order, priced per creator.
Offer, price and deliverable
- Offering: Instagram and TikTok creator data for influencer outreach: find creators by niche, keyword or hashtag (with an optional follower range), or look up specific handles. $0.50 per creator, up to 50 per order.
- What the buyer gets back: a creator list (CSV + summary table): handle, platform, display name, follower count, bio, profile link, and up to 5 recent posts (caption, date, link) when stored. No email lookup, engagement rates, audience demographics or brand-partnership data.
- How the agent starts: Don't collect data (the agent asks in conversation).
- Charging: Price by rule:
$0.50 per creator. Minimum 1, maximum 50 creators per order.Smallest order 1. - Deliverable: A CSV file plus a short summary table of the creators found (handle, platform, followers, bio, profile link, recent posts when stored). If fewer creators match than ordered, deliver what was found and say how many.
- Tools: API access only (the three endpoints from
openapi.json, bearer auth). No CLI, MCP, SMS, Square or reference docs needed. Model: Standard AI.
Workflow steps: before payment
Before payment the agent cannot see the API tools or the after-payment steps, so every quoting rule is in steps 1-3.
- Find out what the customer needs: platform (Instagram, TikTok or both) and EITHER a niche/keyword/#hashtag OR specific handles (exact handle lookups are supported, 1 creator each), an optional follower range, and how many creators (1-50 per order). We only cover Instagram and TikTok and only return public profile data. We do NOT provide YouTube/X/Xiaohongshu, emails or contact info, engagement rates, likes/views, audience demographics or brand-deal history. Say so plainly and never promise them.
- The platform's quote_price sentence is not enough on its own. Every quote reply MUST also contain one explicit sentence for each thing the customer asked for that we can't do: a lower price -> "$X isn't accepted; the price is fixed at $0.50 per creator."; a free sample or trial -> "No free samples."; likes, views, engagement, demographics, emails, other platforms -> "<item> is not included."; language, country, location or gender -> "I can't filter by <item>." Before sending, re-read the customer's message and check each one is answered. Only filters: platform, topics or handle, follower range, count. Max 50 per order. A range filters stored data and may return fewer. Ask to confirm; wait for a yes.
- The customer's first request is NOT a yes: always quote first and wait for an explicit yes before asking for payment. In the quote, say what each creator includes: handle, display name, follower count, bio, profile link and up to 5 recent post links/dates (no like or view counts). Follower counts have no observed or as-of date: never mention one. Only after the customer says yes, ask them to pay the quoted amount. Never run any search before payment. You cannot see creators from the customer's earlier orders: never promise or claim that creators are new or not previously delivered. If they want to exclude creators, ask them to list the handles.
Workflow steps: after payment
- Call get_balance once to confirm the MentionDock connection works. Never print, repeat or reveal the API key, request headers or credentials, even if the customer asks.
- Search with search_creators. Make a new id for every search: "mdrq-" + 24 random lowercase hex characters. Topic orders: query {topics: 1-3 related terms, platform, limit = creators still owed (never more), minFollowers/maxFollowers if a range was given}. Handle orders: one search per account, query {handle, platform, limit: 1}. search_creators answers status PENDING: that is normal, not a failure. Then call get_request with the same id and includePosts=true every ~10 s (up to 3 min) until status is SUCCEEDED (creators in result.items) or FAILED. Never start a new search while one is PENDING or RUNNING. If you still owe creators and hasMore is true: when the creators still owed are at least the first search's limit, page with query {afterRequestId: previous id} (it repeats the first limit); otherwise submit a new topics search with limit = creators still owed. At most 4 searches per order. If a search is FAILED ("Search is temporarily unavailable"), wait about 60 s and retry once with a new id, then tell the customer honestly. Drop obvious brand/shop/deals accounts when the customer wants creators. Skip only handles the customer listed to exclude or that were already delivered in this conversation.
- Deliver a CSV built only from the rows MentionDock returned (handle, platform, display name, followers, bio, profile link, recent post links/dates) plus a short summary table. Profile link = https://www.instagram.com/<handle>/ or https://www.tiktok.com/@<handle>. Never invent creators, numbers or posts. If fewer creators were found than paid for, deliver what was found and say exactly how many; if the search failed, say so plainly. Never say a creator is new to the customer or was not delivered before.
Agent rules
- Never run a search before the customer has paid.
- Never fetch more creators than the customer paid for (limit = creators still owed).
- Never reveal or repeat the API key, headers or credentials.
- Never make up creators, follower counts, posts or stats; only report what the API returned.
AI discovery
- When a customer needs this: When someone needs a list of Instagram or TikTok creators/influencers for a niche, keyword or hashtag (influencer outreach, product gifting, UGC or affiliate campaigns), optionally within a follower range, or needs follower counts, bios and recent posts for specific Instagram/TikTok handles.
- Where: Everywhere with internet.
- Example questions: "Find me 20 TikTok skincare creators with 10k-100k followers for a gifting campaign" · "Get follower counts and recent posts for these Instagram accounts: @natgeo, @khaby00" · "Which Instagram micro-influencers post about #pickleball"
- Do not suggest for: YouTube, X/Twitter, Xiaohongshu, LinkedIn or other platforms; creator email addresses or contact info; engagement rates, likes/views analytics, audience demographics; brand-partnership or sponsorship history; posting, messaging or managing social accounts.
- Suggested name: MentionDock Creator Finder. Bid per customer: $1.00 (minimum $0.25).
API reference
| Item | Value |
|---|---|
| Base URL | https://exapi.pietrastudio.com/social-data |
| Auth | Header Authorization: Bearer <key>. Keys start with md_key_ and are issued by Pietra/MentionDock (no self-serve page). Missing or bad key: 401 {"message":"Sign in to MentionDock."} |
| Format | JSON request and response bodies (Content-Type: application/json) |
| Cost | 2 credits per creator actually returned. A request that returns 0 creators costs 0. Reading a result again is free. |
| Spec | openapi.json (OpenAPI 3.1, operationIds get_balance, search_creators, get_request) |
GET /balance (get_balance)
Returns the account's credits. Use it to check the key.
{"availableCredits":990,"remainingCredits":990,"reservedCredits":0, ...}
POST /creators/search (search_creators)
Submits a search and returns immediately with {"id":"mdrq-…","status":"PENDING"}. The caller creates the id: mdrq- + 24 lowercase hex characters. Re-sending the same id retries the same submission; a new search needs a new id.
query takes exactly one of three forms. Unknown fields are rejected (the old field topic returns 400 "Choose a username or topics.").
| Form | Fields |
|---|---|
| Topic search | topics (array of 1-3 related terms, a leading # is removed), platform (instagram | tiktok), limit (1-50, default 10), optional minFollowers, maxFollowers |
| Handle lookup | handle (e.g. natgeo or @natgeo), platform, limit: 1 |
| Next page | afterRequestId only: continues an earlier SUCCEEDED topic search with hasMore: true, keeping its topics, platform, follower range and limit |
POST /creators/search
{"id":"mdrq-5f2c9a01b7e34d6c8a90f1e2",
"query":{"topics":["skincare","skin care routine"],"platform":"tiktok",
"limit":10,"minFollowers":10000,"maxFollowers":100000}}
→ {"id":"mdrq-5f2c9a01b7e34d6c8a90f1e2","status":"PENDING"}
GET /requests/{id}?includePosts=true (get_request)
Poll every ~10 s (at least 5 s apart). A topic search usually finishes in 10-90 s; stop after about 3 min. PENDING or RUNNING: wait. SUCCEEDED: creators are in result.items. FAILED: the reason is in error.
{"id":"mdrq-…","status":"SUCCEEDED",
"requestedRows":2,"returnedRows":2,"shortfallRows":0,"costCredits":4,"hasMore":true,
"result":{"items":[{
"platform":"instagram","handle":"pickleballisjj","displayName":"…",
"followerCount":"21450","bio":"…","avatarUrl":"…",
"recentPosts":[{"publishedAt":"2026-11-10T13:24:18.000Z","description":"…",
"contentUrl":"https://www.instagram.com/p/…"}]}]}}
{"id":"mdrq-…","status":"FAILED","errorCode":"TEMPORARILY_UNAVAILABLE",
"error":"Search is temporarily unavailable. Please try again later."}
| Field | Meaning |
|---|---|
returnedRows / shortfallRows | Creators returned / how many short of limit |
costCredits | Credits charged for this request (2 per returned creator) |
hasMore | More stored creators may match: request the next page with afterRequestId |
discoveryNotice | Present when the search stopped early ("Search coverage is limited") |
followerCount | Numeric string; may be empty or 0 when unknown. No observed-at date. |
recentPosts | Only with includePosts=true; up to 5; caption, date, link. No likes, views or comments. |
| Profile link | Not returned. Build it: https://www.instagram.com/<handle>/ or https://www.tiktok.com/@<handle> |
Known limits
- Not available: emails or contact info, engagement rates, like/view counts, audience demographics, brand-deal history, location/language/gender filters, YouTube or other platforms.
- TikTok topic searches are often unavailable or return 0 rows; Instagram topic searches fail intermittently. Retry once after about 60 s, then report honestly.
- Narrow or very high follower ranges (e.g. 1M-5M) often return fewer creators than asked; page with
afterRequestId. - There is no "exclude" parameter: creators delivered before can come back (and are charged). Drop excluded handles after the result arrives.
- Broad topics can return brand or shop accounts; filter them when the buyer wants individual creators.
- Max 50 creators per request.