api_key and the account email as email in the account config.
Things to know before you call:
- Every call costs credits. One credit per scrape, one page = one credit.
google.shoppingStatusis free.extract_text(Google and LinkedIn),impression_data(LinkedIn) andinfluencer_ads(TikTok) each add one credit on top. A 204 (“no ads found”) is not charged. - A 204 is a real answer, and each endpoint reports it differently. Adyntel answers 204 with no body when it finds nothing, and charges nothing for it. The plugin turns that into an empty result rather than an error. How you read it depends on the endpoint:
meta.adsandmeta.adSearchleaveresultsabsent,tiktok.adsleavesbrand_adsabsent,tiktok.keywordSearchleavesdataabsent, andgoogle.shoppingandgoogle.shoppingStatusleaveadsandidabsent. Separately,google.shoppingwithoutshopping: trueanswers with anidfor a queued scrape; that is not an empty result, so poll it withgoogle.shoppingStatus. A failed body read is not a 204 and throws. Ongoogle.adsandlinkedin.adsa 204 can also mean the scrape passed Adyntel’s 60 second sync limit, and the status alone can’t tell that from “no ads”. When you need a complete answer from either, sendwebhook_urlso the scrape runs as a job and the results are POSTed to you. company_domainis the bare domain. Sendclay.com, neverhttps://clay.comorwww.clay.com. Adyntel does not reject a URL; it finds nothing and answers 204.- Paging differs by endpoint.
meta.ads,meta.adSearch,google.ads,linkedin.adsandlinkedin.keywordSearchreturn acontinuation_tokenthat isnullon the last page; send it back on the next call.tiktok.adsusescontinuation_tokensinstead, one token for brand ads and one per influencer.tiktok.keywordSearchhas no paging input at all: it returnshas_moreand asearch_id, but the API exposes no parameter for requesting the next page, so a caller gets the first page only. On Google, a country filter is scoped to one call: sendcountry_codeagain with every token, because the token does not carry it. all_adsis a one-way door. Ongoogle.ads,linkedin.adsandmeta.adsit follows the token to the end, costs one credit per page, and the docs state there is no way to stop it. It needs awebhook_url, and the schema rejects the call without one rather than letting Adyntel fail it.meta.adSearchexposesall_adswithout a webhook input, so its pages are collected by Adyntel and only the final result is returned; it takes nowebhook_url.- Webhooks are yours to receive. Setting
webhook_urlmakes Adyntel answer with ajobIdand POST the results to that URL later. This plugin does not host that receiver; the response carriesjobIdorjobIdsso you can tell a queued job from a result. - Two filters reject rather than ignore. On Meta, an unrecognised
languageis a 422 before anything is scraped. On Google, Adyntel treats an unrecognisedmedia_typeasall, so the schema accepts onlytext,image,videoandalland a typo fails before the call instead of widening the result. - Country support differs per endpoint. Meta accepts one code or an array of up to 20 (the array needs
webhook_urland costs one credit per country). Google accepts one per call. TikTok’s keyword search accepts European codes only; the schema rejectsUSrather than letting the API answer with nothing. - TikTok wraps its answers.
tiktok.keywordSearchandtiktok.adDetailsreturn{ code, data }and can send a non-zerocodewith a 200. The plugin throws anAdyntelAPIErroron a non-zero code so a failure cannot read as “no ads”; itsproviderCodeholds the code, and it is not retried because the scrape already ran.
- 11 typed API operations
Setup
1
Install
2
Add the plugin
corsair.ts
multiTenancy: true, scope calls with corsair.withTenant(id). See Quick start for KEK + Hub keys, and Multi-tenancy for account isolation.3
Choose authentication
- API Key (Recommended)
No setup required yet. When you make your first request as a tenant, Corsair prompts for the API key.More: API Key
4
Connect a tenant
Mint a connect link and send the tenant to it. Hub hosts the page and delivers the result to your app — see Connect / OAuth.
Example API calls
List a company’s Google adsWhat’s next
API reference
Every
adyntel.api.* operation with input and output types.Connect / OAuth
createLink, Hub delivery, and tenant connect flows.
Use with agents
Expose this plugin’s operations as MCP tools.