Influencer Talent Agency Lookup
Pricing
from $8.00 / 1,000 agency lookups
Influencer Talent Agency Lookup
Matches a creator to the talent agency that represents them, or an agency to its public roster. One flat row with agency name, domain, public contact, niches, and match method. Coverage is partial and each row says how it matched. Reads and contributes to a shared agency pool, on by default.
Pricing
from $8.00 / 1,000 agency lookups
Rating
0.0
(0)
Developer
Mamba Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
๐ข What can Influencer Talent Agency Lookup do?
Both directions. Creator to agency: handles in; the public profile is read for a manager or business email, the bio link page is crawled for manager wording, the email domain is matched against the agency list, the handle is matched against public rosters, and the bio is read for an agency name. Agency to roster: agency domains or names in; one row per creator on the agency's public roster page, with the agency columns filled.
Every row says how it matched: email_domain_exact, email_domain_parent, public_roster, bio_wording, no_public_roster, or no_match with the domains tried in error_reason.
| ๐ฆ What you get | โ๏ธ Features and integrations |
|---|---|
| ๐ข Agency name and domain for a creator, with the match method ๐ Public roster for an agency, one row per creator ๐ง Manager or business email read from the profile and the bio link page ๐งญ Six match methods, so a no_match says what was tried๐งพ 57 flat fields, snake_case, the suite's shared row | ๐๏ธ 143 agencies, 557 roster creators, seeded from 13 public directories ๐ The list grows on your account, new manager domains are appended ๐ Seven platforms, TikTok, Instagram, YouTube, Pinterest, Twitch, Threads, podcasts ๐งช Clay ready, one handle or domain per row lands on the same path โฌ๏ธ Export to JSON, CSV, Excel, HTML or XML |
Bought by talent agencies mapping the competition's roster, brand partnership teams that need the manager rather than the creator, and creator tool companies selling through management.
๐ซ This is not a complete registry of creator representation. Coverage is what 13 public directories and 22 public roster pages expose. A creator represented by an agency outside the list returns
no_match, never a guess, and the domains tried are inerror_reason.
๐ก Why use Influencer Talent Agency Lookup?
| If you sell | Read these fields |
|---|---|
| Talent representation | agency_name, agency_match_method, manager_email |
| Brand partnerships | manager_email, manager_source_url, agency_domain |
| Creator tools sold through management | agency_name, agency_domain, then the roster direction |
| Anything, as a disqualifier | agency_match_method, row_status, error_reason |
๐งญ The list, and why coverage is partial by construction
Seeded on 2026-09-22 from 13 public directories (Influencer Marketing Hub, Attri, three Influencer Hero lists, NetInfluencer, Munro, ForCreators, Everything PR, LYFE Marketing, The Social Shepherd, Web Tonic) and each agency's own site: 143 reachable agencies, 93 with a public contact email, 22 with a public roster holding 557 creators (instagram 287, tiktok 132, youtube 104, twitch 34). Directory listings are paid placements, and 99 of the 143 agencies appear in exactly one directory, so sources on every agency record shows where it came from. Coverage is partial by construction; a creator represented by an agency outside the list returns no_match, never a guess.
The list is read at run time from a named key value store on your account (creator-agency-list), seeded from the bundled copy on the first run. Every run appends newly seen manager email domains as unconfirmed agencies, which is how the list grows.
๐ What data can Influencer Talent Agency Lookup extract?
57 fields per row, the same 57 in the same order on every actor in this suite. The ones this actor fills:
| Field | What it holds |
|---|---|
agency_name, agency_domain | The agency matched, or the agency whose roster this row came from |
agency_match_method | email_domain_exact, email_domain_parent, public_roster, bio_wording, no_public_roster, or no_match |
manager_name, manager_email, manager_source_url | The manager contact and where it was found |
business_email, business_email_source | A public email in the bio or on the link page |
platform, handle, profile_url, display_name, bio, bio_link | The creator, in either direction |
source_url, read_at, row_status, error_reason, billable_events_json | Where the row came from, when, whether it is usable, what was tried, and what it cost |
โ ๏ธ
falseandnullare not the same thing, and an empty cell is not a failed read. A column this actor does not own isnull, never missing. On a boolean,falsemeans the page was read and the signal was not there;nullmeans nothing read it. On an Influencer Profile Scraper row,verified: falseis a profile without the mark andverified: nullis a profile that could not be read. Readrow_statusbefore any other column; the paragraph below says how.
Every actor in this suite writes the same 57 flat columns, in the same order, and fills the ones it owns. A column an actor does not own is null, never missing. Nested data lives only in columns ending _json, as a JSON string, so a Clay column reads one cell.
| Group | Columns | Filled by |
|---|---|---|
| Identity | creator_id, creator_id_method, creator_id_confidence, platform, handle, profile_url, display_name | Influencer Finder, Influencer Profile Scraper |
| Discovery | search_keyword, niche, similar_creators, similar_creators_method | Influencer Finder |
| Profile | followers, following, post_count, engagement_rate, engagement_method, verified, bio, bio_link, location_text, country_guess, country_guess_method | Influencer Profile Scraper |
| Contact | business_email, business_email_source, website_email, website_email_source_url, manager_name, manager_email, manager_source_url, agency_name, agency_domain, agency_match_method | Influencer Profile Scraper, Link in Bio Scraper and Newsletter Detector, Influencer Talent Agency Lookup |
| Links | link_in_bio_platform, outbound_links_json, other_social_profiles_json, own_website | Link in Bio Scraper and Newsletter Detector; other_social_profiles_json also by the Influencer Profile Scraper |
| Newsletter | newsletter_status, newsletter_platform, newsletter_url, newsletter_evidence_url, newsletter_check_method | Link in Bio Scraper and Newsletter Detector |
| Sells | sells_course, sells_coaching, sells_digital_product, sells_merch, sells_membership, brand_deals_visible, discount_codes_visible | Link in Bio Scraper and Newsletter Detector |
| Change | change_type, change_from, change_to, previous_run_at | Influencer Change Monitor |
| Run | source_url, read_at, row_status, error_reason, billable_events_json | All six |
The Influencer Lead List Builder runs the Influencer Finder, the Influencer Profile Scraper, and the Link in Bio Scraper and Newsletter Detector in one run and fills what they fill. The Influencer Change Monitor and the Influencer Talent Agency Lookup read the profile (and the Influencer Change Monitor reads the link page too when check_links is on), so their rows carry the identity, profile, contact, and link columns as well.
Read row_status first. ok is a normal row. error carries the reason in error_reason (not_found: user banned, private, blocked: bot detection page) and charges nothing. partial means the page was read but a step after it failed, and the reason says which.
The creator ID. creator_id is cr_ plus 16 hex characters of the SHA-1 of platform:handle of the creator's primary profile, so the same creator gets the same ID in every actor and every run. When one run sees the same creator on two platforms, the rows share the ID and each row says how it was linked: bio_link_match (0.9, one profile links to the other), website_match (0.8, same own website), handle_match (0.5, same handle on two platforms, which collides on common words). A lone row is seed_handle at 1.
Country scope. This actor applies no country filter. A creator to agency row carries country_guess and country_guess_method from the profile read (the platform's region field, the location text, the bio, or a flag emoji); a roster row is read from the agency's page, not the profile, so both are null.
๐ ๏ธ How to find the talent agency behind a creator
- Open the Input tab. Creator to agency: put handles or profile URLs in
handles, withplatformsfor any bare@handle. Agency to roster: put agency domains inagency_domainsor names inagency_names. - Click Start. Creator to agency returns one row per creator; agency to roster returns one row per creator on the agency's public roster page.
- Read
agency_match_methodfirst.email_domain_exactandpublic_rosterare the strong matches;bio_wordingis a name read from the bio;no_matchlists the domains tried inerror_reason. - Export from the Output tab, or pull the rows through the API.
๐งช Using it in Clay
Add an Enrichment > Apify column, pick this actor, and map your handle column to handles, or your agency domain column to agency_domains in a separate roster table. Every input is accepted as a string, which is what Clay sends. Filter on agency_match_method before acting on agency_name.
๐ Batch or single
One handle or one agency domain is one run; a list is a batch. Both shapes reach the same code path, and so does the shape the platform produces when Clay sends a top level array against an object schema. Input is deduplicated before any fetch. Rows are pushed as each wave finishes, so a run that hits its timeout keeps every row it already resolved. A row that throws becomes an error row with the reason and the run continues.
Concurrency (batch_size) is profiles in flight per platform in the creator to agency direction, default 4 on Instagram and 3 elsewhere, the values measured for the Influencer Profile Scraper. Above the measured point rows started dropping; that is why the default is not higher.
๐ต How much does it cost to look up a creator agency?
Pay per event. You are charged for output, never for input.
| Event | Fires when | Price |
|---|---|---|
actor-start | Once per run, on start. | $0.001 |
agency-lookup | Once per row returned, in either direction. | $0.008 |
browser-render | Once per agency roster page rendered in the headless browser because the plain fetch returned an empty shell, and only when the rendered page came back readable. Only when render_unreadable_pages is on. A page that answers with a bot challenge is recorded as blocked and is never rendered, so it is never charged. | $0.004 |
instagram-bio-fetch | Once per Instagram profile row when the bio, bio link, and following were not on the embed widget or the datacenter API and the profile page was read over the residential proxy and came back readable. Only when escalate_on_block is on; uncheck it to avoid the charge and accept empty bio fields on about half of Instagram rows. Never on the embed or datacenter reads, never on another platform, never on a blocked page, never on an error row. | $0.010 |
Free Apify plan users get 160 results per calendar month, reset monthly. Upgrade to any paid Apify plan for unlimited use: https://apify.com/pricing?fpr=mamba
๐ณ What you are billed for.
agency-lookupfires once per row returned, in either direction, ano_matchrow included, because the profile read, the link page crawl, and the roster match are the work. The creator to agency direction reads the creator's profile for a manager email; an Instagram handle whose bio needs the residential page is chargedinstagram-bio-fetchon top of the lookup.
Apify bills its own platform usage on top of the event prices.
โจ๏ธ Input
Everything is on the Input tab. The options worth explaining:
| Field | What it does |
|---|---|
handles, platforms | Creator to agency. Handles or profile URLs, same shapes as the Influencer Profile Scraper. |
agency_domains | Agency to roster: one domain per line (for example viralnation.com). Returns one row per creator on the agency's public roster. |
agency_names | Agency to roster by name when you do not have the domain. Exact or partial name match against the list. |
render_unreadable_pages | Off by default. An agency roster page that builds its talent grid in the browser returns an empty shell to a plain fetch, so the roster reads as empty. Turn this on to render those pages and read the roster from the rendered page. Charges browser-render ($0.004) per page that comes back readable. A bot challenge page is recorded as blocked and is never rendered. |
escalate_on_block | On by default. A profile fetch that returns a bot detection page is retried once over the residential proxy, and on Instagram the bio page is fetched over residential when the datacenter API does not answer; a readable page charges instagram-bio-fetch ($0.010) on top of the lookup. Off: no instagram-bio-fetch is ever charged, and the Instagram bio, bio link, and therefore any manager email written in the bio stay empty on about half of the rows. Creator to agency direction only. |
batch_size | Rows in flight per platform. Leave empty for the measured default. |
๐ค Output
Exports to JSON, CSV, Excel, HTML or XML. One flat, snake_case row per creator per platform, 57 columns, with null rather than a missing key. No nested objects, so it drops straight into Clay, a spreadsheet or a warehouse table without a flattening step. Nested data lives only in columns ending _json, as a JSON string, so a Clay column reads one cell.
A creator to agency row with no match: the public email was found, its domain is not an agency on the list, and the handle is on no public roster, so agency_match_method is no_match and error_reason says what was tried. The row below is trimmed to the columns this actor fills.
{"creator_id": "cr_f37780b33cab221f","creator_id_method": "seed_handle","creator_id_confidence": 1,"platform": "tiktok","handle": "thatisperfect","profile_url": "https://www.tiktok.com/@thatisperfect","display_name": "Tech & Gadget Finds ๐","bio": "Trendy Tech Gadgets + more ๐\n\n๐ฉThatisperfect@hotmail.com \n\n๐ปLinks๐ป","bio_link": "https://linktr.ee/thatisperfect","business_email": "thatisperfect@hotmail.com","business_email_source": "bio","manager_email": null,"agency_name": null,"agency_domain": null,"agency_match_method": "no_match","source_url": "https://www.tiktok.com/@thatisperfect","read_at": "2026-09-22T08:19:08.818Z","row_status": "ok","error_reason": "no manager or business email domain to match, and no roster hit","billable_events_json": "[{\"event\":\"agency-lookup\",\"count\":1}]"}
๐ก Tips
- Read
agency_match_methodbeforeagency_name.email_domain_parentandbio_wordingare weaker thanemail_domain_exactandpublic_roster. - Run the roster direction on your competitors' domains. One row per creator, with the creator columns filled, is a prospect list.
- The list grows on your account. Every run appends newly seen manager email domains as unconfirmed agencies to
creator-agency-list, so a second run over the same niche matches more. - A creator with a Gmail business email and no roster hit is a creator without public representation, which is its own signal.
โ ๏ธ Known limits
Coverage is partial by construction. 143 reachable agencies, 93 with a public contact email, 22 with a public roster holding 557 creators. Directory listings are paid placements, and 99 of the 143 agencies appear in exactly one directory. A creator represented by an agency outside the list returns no_match, never a guess.
A roster is what the agency publishes. Agencies without a public roster page return no_public_roster in the roster direction.
A manager email is read only where one is written. In the bio, on the link page, or on the creator's website, labeled management, mgmt, managed by, manager, or booking. A creator who publishes none returns no_match unless a roster names them.
Not X, not Facebook pages, not LinkedIn. Seven platforms are read, listed above.
What is never done. No login. No CAPTCHA solving. No LinkedIn fetch. No message to anyone. No key of ours is used on your run; this actor has no AI option and takes no API key.
What this actor shares
This run contributes the records it finds to a shared creator and agency pool that all users of this actor read from. What one run finds, the next run can read.
This actor reads the pool before it reads anything else. When the pool is unreachable it falls back to the agency list bundled in the build, so a run never fails on the pool.
The toggle is contribute_to_shared_pool. It is a boolean input and it is on by default. Turn it off and the run still reads the pool and writes nothing to it.
What this actor contributes. The agency rows and the roster rows read during the run: agency name, domain, public contact, country, classification, roster URL, and one roster row per creator with the platform and the handle.
Only public data that is already in your own output. Every field written to the pool is a field this run returned to you, read from a page the platform or the creator publishes to anyone without a login. Nothing from your Apify account, your input list, your API keys, or your own notes is sent. A contribution never deletes anything from the pool.
What a contribution is labeled with. The actor ID, the run ID, the pool key issued to the actor build, and a hash of the calling IP address, used for the rate limit and nothing else. Your Apify account and your user ID are not recorded.
Contributing is free. No event is charged for a write to the pool. If the pool is unreachable the run finishes as normal, the rows are dropped, and the run log says so.
โ FAQ
Why does a creator I know is represented come back no_match?
The agency is not on the list, or the creator's public pages carry no manager email and the agency has no public roster. error_reason lists the domains tried.
Where does the list come from?
Seeded on 2026-09-22 from 13 public directories and each agency's own site. sources on every agency record shows where it came from.
Does it read LinkedIn? No. No LinkedIn fetch, ever.
Is a no_match row charged?
Yes. The profile read, the link page crawl, and the roster match are the work, and the row says what was tried.
Can I run an agency name instead of a domain?
Yes. agency_names matches exact or partial names against the list.
๐งฉ Want other GTM data?
Mamba Labs builds a fleet of GTM enrichment actors that share one flat,
Clay-ready output convention, so their rows join on company_domain or
creator_id with no cleaning step:
Every actor in the suite takes a domain, a company, or a creator and returns one flat row, so they stack in the same Clay table without reshaping anything.
๐ ๏ธ Need something custom built for you or your team? Tell us what you are trying to find and we will build it. Talk to Mamba Labs.
๐ Support
Issues, field requests and bug reports: open an issue on the actor's Issues tab. Mamba Labs reads every one.
โน๏ธ Sourcing and legal. Every field comes from pages the platforms and the creators publish to anyone without a login, read directly or through a proxy, with no login, no CAPTCHA solving, and no LinkedIn fetch. The row records what was public at
read_at. Nothing is assessed or scored; a class, a flag, or a match method says what was read and where. You are responsible for how you use the output, including under applicable data protection and platform terms.
Built by Mamba Labs.