> For the complete documentation index, see [llms.txt](https://docs.adyntel.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.adyntel.com/openapi-docs/existing-endpoints.md).

# Existing endpoints

####

## Facebook & Instagram Ads

> See which Facebook or Instagram ads a company is running by providing their website or Facebook page as input.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/facebook":{"post":{"summary":"Facebook & Instagram Ads","description":"See which Facebook or Instagram ads a company is running by providing their website or Facebook page as input.","operationId":"facebookAds","tags":["Facebook"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacebookRequest"}}}},"responses":{"200":{"description":"Ads retrieved successfully. When `webhook_url` is provided, returns a job reference instead of ads data.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Facebook Ad Library response containing ads data"},{"$ref":"#/components/schemas/JobStartedResponse"}]}}}},"204":{"description":"No ads found. You are not charged when you receive this response code."},"400":{"description":"Missing required parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"}}}}},"components":{"schemas":{"FacebookRequest":{"type":"object","required":["api_key","email"],"properties":{"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"},"facebook_url":{"type":"string","description":"Facebook page url (needs to start with https://)"},"company_domain":{"type":"string","description":"Company website"},"country_code":{"type":"string","description":"Parameter used to filter results for a specific country."},"continuation_token":{"type":"string","description":"Token used to grab the next set of ads"},"media_type":{"type":"string","enum":["image","meme","image_and_meme","video"],"description":"Parameter used to filter results for a specific type of media."},"active_status":{"type":"string","enum":["inactive","all"],"description":"This filters the search in the ad library by active, inactive or all ads."},"all_ads":{"type":"boolean","default":false,"description":"This will automatically use the continuation_token and scrape all the pages, returning all available ads."},"webhook_url":{"type":"string","description":"Webhook URL where the data will be returned"}}},"JobStartedResponse":{"type":"object","properties":{"status":{"type":"string"},"jobId":{"type":"string","format":"uuid","description":"Unique job ID. Track via GET /track/jobs and /track/results."}}},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InsufficientCredits":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## Google Ads

> See which Google ads a company is running by providing their website as input.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/google":{"post":{"summary":"Google Ads","description":"See which Google ads a company is running by providing their website as input.","operationId":"googleAds","tags":["Google"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleSearchRequest"}}}},"responses":{"200":{"description":"Ads retrieved successfully. When `webhook_url` is provided, returns a job reference instead of ads data.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","description":"Google Ads response containing ads data and total_ad_count"},{"$ref":"#/components/schemas/JobStartedResponse"}]}}}},"204":{"description":"No ads found, or request timed out (60s sync limit)"},"400":{"description":"Missing required parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"}}}}},"components":{"schemas":{"GoogleSearchRequest":{"type":"object","required":["email","api_key","company_domain"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"company_domain":{"type":"string","description":"Company website"},"media_type":{"type":"string","enum":["text","image","video"],"description":"Filter results based on media type. Possible values: text, image, video."},"continuation_token":{"type":"string","description":"Token used to grab the next set of ads"},"all_ads":{"type":"boolean","default":false,"description":"This will automatically use the continuation_token and scrape all the pages, returning all available ads. Works only with a webhook_url as it needs a place to send each page, one by one. Warning: use this cautiously because there is no way of stopping it. If you use this on a domain that runs 10000 ads, it will try to scrape all the ads and it will use the credits (one page = one credit)"},"extract_text":{"type":"boolean","default":false,"description":"Extract text content from ad creatives"},"webhook_url":{"type":"string","description":"Webhook URL for async delivery"},"data_provider":{"type":"string","enum":["rapidapi","apify"],"description":"Data provider to use"}}},"JobStartedResponse":{"type":"object","properties":{"status":{"type":"string"},"jobId":{"type":"string","format":"uuid","description":"Unique job ID. Track via GET /track/jobs and /track/results."}}},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InsufficientCredits":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## LinkedIn Ads

> See which LinkedIn ads a company is running by providing their website as input.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/linkedin":{"post":{"summary":"LinkedIn Ads","description":"See which LinkedIn ads a company is running by providing their website as input.","operationId":"linkedinAds","tags":["LinkedIn"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedInRequest"}}}},"responses":{"200":{"description":"Ads retrieved successfully. When `webhook_url` is provided, returns a job reference instead of ads data.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","properties":{"page_id":{"type":"string"},"continuation_token":{"type":"string","nullable":true},"is_last_page":{"type":"boolean"},"total_ads":{"type":"integer"},"ads":{"type":"array","items":{"type":"object"}}}},{"$ref":"#/components/schemas/JobStartedResponse"}]}}}},"204":{"description":"No ads found, or request timed out (60s sync limit)"},"400":{"description":"Missing required parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"}}}}},"components":{"schemas":{"LinkedInRequest":{"type":"object","required":["email","api_key"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"linkedin_page_id":{"type":"string","description":"LinkedIn Page ID"},"company_domain":{"type":"string","description":"Company website"},"linkedin_page_ids":{"type":"array","items":{"type":"string"},"description":"Multiple LinkedIn page IDs for batch mode"},"company_domains":{"type":"array","items":{"type":"string"},"description":"Multiple company domains for batch mode"},"continuation_token":{"type":"string","description":"Token used to grab the next set of ads"},"extract":{"type":"string","description":"Extract specific data. Use 'number_of_ads' to return only the ad count."},"all_ads":{"type":"boolean","default":false,"description":"This will automatically use the continuation_token and scrape all the pages, returning all available ads. Works only with a webhook_url as it needs a place to send each page, one by one. Warning: use this cautiously because there is no way of stopping it. If you use this on a domain that runs 10000 ads, it will try to scrape all the ads and it will use the credits (one page = one credit)"},"live_ads":{"type":"boolean","default":false,"description":"Only return currently active ads"},"webhook_url":{"type":"string","description":"Webhook URL where the data will be returned"},"data_provider":{"type":"string","enum":["rapidapi","apify"],"description":"Data provider to use"}}},"JobStartedResponse":{"type":"object","properties":{"status":{"type":"string"},"jobId":{"type":"string","format":"uuid","description":"Unique job ID. Track via GET /track/jobs and /track/results."}}},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InsufficientCredits":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## LinkedIn Keyword Search

> This endpoint runs a search in the LinkedIn Ad Library with the keyword and, optionally, the filters you provide.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/linkedin-keyword-search":{"post":{"summary":"LinkedIn Keyword Search","description":"This endpoint runs a search in the LinkedIn Ad Library with the keyword and, optionally, the filters you provide.","operationId":"linkedinKeywordSearch","tags":["LinkedIn"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkedInKeywordSearchRequest"}}}},"responses":{"200":{"description":"Search results retrieved successfully","content":{"application/json":{"schema":{"type":"object","description":"LinkedIn Ad Library keyword search results"}}}},"400":{"description":"Invalid dateOption or date format"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"500":{"description":"Failed to scrape LinkedIn Ad Library","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}},"components":{"schemas":{"LinkedInKeywordSearchRequest":{"type":"object","required":["email","api_key","keyword"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"keyword":{"type":"string","description":"Company website"},"country":{"type":"string","description":"The 2-digit country code"},"dateOption":{"type":"string","enum":["current-month","current-year","last-30-days","last-year","custom-date-range"],"description":"Valid options: current-month, current-year, custom-date-range, last-30-days, last-year or custom-date-range"},"startDate":{"type":"string","format":"date","description":"YYYY-MM-DD format (e.g. 2026-01-15)"},"endDate":{"type":"string","format":"date","description":"YYYY-MM-DD format (e.g. 2026-01-15)"},"continuation_token":{"type":"string","description":"A token that you can use to scrape the next page"}}},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InsufficientCredits":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## Meta Ad Search

> Find ads in the ad library based on a keyword.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/facebook_ad_search":{"post":{"summary":"Meta Ad Search","description":"Find ads in the ad library based on a keyword.","operationId":"facebookAdSearch","tags":["Facebook"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FacebookAdSearchRequest"}}}},"responses":{"200":{"description":"Ads matching the keyword retrieved successfully","content":{"application/json":{"schema":{"type":"object","description":"Facebook Ad Library keyword search results"}}}},"400":{"description":"Missing keyword","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"500":{"description":"Server error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}}}}},"components":{"schemas":{"FacebookAdSearchRequest":{"type":"object","required":["email","api_key","keyword"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"keyword":{"type":"string","description":"The keyword you want to use in your search"},"country_code":{"type":"string","description":"To limit results to one specific country"},"continuation_token":{"type":"string","description":"Token for paginating through results"},"all_ads":{"type":"boolean","default":false,"description":"Return all ads (auto-paginate)"}}},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InsufficientCredits":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## Google Shopping Ads

> Retrieve all Google shopping ads for a specified company by providing their domain. This differs from the standard Google endpoint, which reports search, image, and video ads on Google's platform.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/google_shopping":{"post":{"summary":"Google Shopping Ads","description":"Retrieve all Google shopping ads for a specified company by providing their domain. This differs from the standard Google endpoint, which reports search, image, and video ads on Google's platform.","operationId":"googleShopping","tags":["Google"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleShoppingRequest"}}}},"responses":{"200":{"description":"Ads retrieved successfully (shopping=true mode)","content":{"application/json":{"schema":{"type":"object","properties":{"ads":{"type":"array","items":{"type":"object"}}}}}}},"202":{"description":"Task created, poll `/google_shopping_status` with the returned ID","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","description":"Task ID for status polling"}}}}}},"204":{"description":"No ads found","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"message":{"type":"string"}}}}}},"400":{"description":"Missing required parameters"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"500":{"description":"Server error"}}}}},"components":{"schemas":{"GoogleShoppingRequest":{"type":"object","required":["api_key","email","company_domain"],"properties":{"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"},"company_domain":{"type":"string","description":"Company website"},"shopping":{"type":"boolean","default":false,"description":"When true, use Railway parser for direct synchronous results. When false, use DataForSEO (async, poll with /google_shopping_status)."}}},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InsufficientCredits":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## Google Shopping Status

> Retrieve results from a Google Shopping search using a request ID obtained from the initial Google Shopping endpoint call. The service is free to use.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/google_shopping_status":{"post":{"summary":"Google Shopping Status","description":"Retrieve results from a Google Shopping search using a request ID obtained from the initial Google Shopping endpoint call. The service is free to use.","operationId":"googleShoppingStatus","tags":["Google"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoogleShoppingStatusRequest"}}}},"responses":{"200":{"description":"Task completed, ads returned","content":{"application/json":{"schema":{"type":"object","properties":{"ads":{"type":"array","items":{"type":"object"}}}}}}},"202":{"description":"Task still processing","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string"},"message":{"type":"string"}}}}}},"204":{"description":"Task completed but no ads found"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"}}}}},"components":{"schemas":{"GoogleShoppingStatusRequest":{"type":"object","required":["id","api_key","email"],"properties":{"id":{"type":"string","description":"The id you received as response"},"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"}}},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InsufficientCredits":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## TikTok Ad Search

> Do an ads search on the platform using a keyword.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/tiktok_search":{"post":{"summary":"TikTok Ad Search","description":"Do an ads search on the platform using a keyword.","operationId":"tiktokSearch","tags":["TikTok"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TikTokSearchRequest"}}}},"responses":{"200":{"description":"Ads matching the keyword retrieved successfully","content":{"application/json":{"schema":{"type":"object","description":"TikTok Ad Library search results"}}}},"400":{"description":"Missing required parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailErrorResponse"}}}},"401":{"$ref":"#/components/responses/UnauthorizedDetail"},"402":{"$ref":"#/components/responses/InsufficientCreditsDetail"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailErrorResponse"}}}}}}}},"components":{"schemas":{"TikTokSearchRequest":{"type":"object","required":["keyword","api_key","email"],"properties":{"keyword":{"type":"string","description":"Your search query"},"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"},"country_code":{"type":"string","description":"Use if you want to limit the search to only one country"}}},"DetailErrorResponse":{"type":"object","properties":{"detail":{"type":"string"}}}},"responses":{"UnauthorizedDetail":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailErrorResponse"}}}},"InsufficientCreditsDetail":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailErrorResponse"}}}}}}}
```

## TikTok Ad Details

> Get all the details for an ad on TikTok using the ad id as the starting point.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/tiktok_ad_details":{"post":{"summary":"TikTok Ad Details","description":"Get all the details for an ad on TikTok using the ad id as the starting point.","operationId":"tiktokAdDetails","tags":["TikTok"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TikTokAdDetailsRequest"}}}},"responses":{"200":{"description":"Ad details retrieved successfully","content":{"application/json":{"schema":{"type":"object","description":"Detailed TikTok ad information"}}}},"400":{"description":"Missing required parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailErrorResponse"}}}},"401":{"$ref":"#/components/responses/UnauthorizedDetail"},"402":{"$ref":"#/components/responses/InsufficientCreditsDetail"},"500":{"description":"Server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailErrorResponse"}}}}}}}},"components":{"schemas":{"TikTokAdDetailsRequest":{"type":"object","required":["id","api_key","email"],"properties":{"id":{"type":"string","description":"Ad id"},"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"}}},"DetailErrorResponse":{"type":"object","properties":{"detail":{"type":"string"}}}},"responses":{"UnauthorizedDetail":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailErrorResponse"}}}},"InsufficientCreditsDetail":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DetailErrorResponse"}}}}}}}
```

## Paid vs Organic Keywords

> An overview of paid and organic keywords for a domain, with estimation of budgets and CPC included.

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"servers":[{"url":"https://api.adyntel.com","description":"Production"}],"paths":{"/domain-keywords":{"post":{"summary":"Paid vs Organic Keywords","description":"An overview of paid and organic keywords for a domain, with estimation of budgets and CPC included.","operationId":"domainKeywords","tags":["Keywords"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeywordsRequest"}}}},"responses":{"200":{"description":"Keywords analytics retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainKeywordsResponse"}}}},"400":{"description":"Missing domain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"$ref":"#/components/responses/InsufficientCredits"},"500":{"description":"Server error or API credentials not configured"}}}}},"components":{"schemas":{"KeywordsRequest":{"type":"object","required":["email","api_key","company_domain"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"company_domain":{"type":"string","description":"Company website (without www or http)"},"language":{"type":"string","default":"English","description":"Language for keyword results"},"limit":{"type":"integer","default":1,"description":"Number of results to return"}}},"DomainKeywordsResponse":{"type":"object","properties":{"organic":{"type":"object","properties":{"count":{"type":"integer","description":"Total organic keywords count"},"estimated_traffic":{"type":"integer","description":"Estimated organic traffic"},"pos_1":{"type":"integer","description":"Keywords in position 1"},"pos_2_3":{"type":"integer","description":"Keywords in positions 2-3"},"pos_4_10":{"type":"integer","description":"Keywords in positions 4-10"},"pos_11_20":{"type":"integer","description":"Keywords in positions 11-20"},"pos_21_30":{"type":"integer","description":"Keywords in positions 21-30"},"pos_31_40":{"type":"integer","description":"Keywords in positions 31-40"},"pos_41_50":{"type":"integer","description":"Keywords in positions 41-50"},"pos_51_60":{"type":"integer","description":"Keywords in positions 51-60"},"pos_61_70":{"type":"integer","description":"Keywords in positions 61-70"},"pos_71_80":{"type":"integer","description":"Keywords in positions 71-80"},"pos_81_90":{"type":"integer","description":"Keywords in positions 81-90"},"pos_91_100":{"type":"integer","description":"Keywords in positions 91-100"},"is_new":{"type":"integer","description":"Newly ranked keywords"},"is_up":{"type":"integer","description":"Keywords that moved up"},"is_down":{"type":"integer","description":"Keywords that moved down"},"is_lost":{"type":"integer","description":"Keywords that were lost"}}},"organic_percentages":{"type":"object","description":"Percentage distribution for each organic position range and trend (pos_1, pos_2_3, ..., is_new, is_up, is_down, is_lost)"},"paid":{"type":"object","properties":{"count":{"type":"integer","description":"Total paid keywords count"},"estimated_traffic":{"type":"integer","description":"Estimated paid traffic"},"estimated_ad_budget":{"type":"integer","description":"Estimated advertising budget"},"estimated_avg_cpc":{"type":"number","description":"Estimated average cost per click"}}},"paid_percentages":{"type":"object","description":"Percentage distribution for paid keyword position ranges and trends"}}},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"Unauthorized":{"description":"Invalid credentials","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"InsufficientCredits":{"description":"Insufficient credits","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## The FacebookRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"FacebookRequest":{"type":"object","required":["api_key","email"],"properties":{"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"},"facebook_url":{"type":"string","description":"Facebook page url (needs to start with https://)"},"company_domain":{"type":"string","description":"Company website"},"country_code":{"type":"string","description":"Parameter used to filter results for a specific country."},"continuation_token":{"type":"string","description":"Token used to grab the next set of ads"},"media_type":{"type":"string","enum":["image","meme","image_and_meme","video"],"description":"Parameter used to filter results for a specific type of media."},"active_status":{"type":"string","enum":["inactive","all"],"description":"This filters the search in the ad library by active, inactive or all ads."},"all_ads":{"type":"boolean","default":false,"description":"This will automatically use the continuation_token and scrape all the pages, returning all available ads."},"webhook_url":{"type":"string","description":"Webhook URL where the data will be returned"}}}}}}
```

## The GoogleSearchRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"GoogleSearchRequest":{"type":"object","required":["email","api_key","company_domain"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"company_domain":{"type":"string","description":"Company website"},"media_type":{"type":"string","enum":["text","image","video"],"description":"Filter results based on media type. Possible values: text, image, video."},"continuation_token":{"type":"string","description":"Token used to grab the next set of ads"},"all_ads":{"type":"boolean","default":false,"description":"This will automatically use the continuation_token and scrape all the pages, returning all available ads. Works only with a webhook_url as it needs a place to send each page, one by one. Warning: use this cautiously because there is no way of stopping it. If you use this on a domain that runs 10000 ads, it will try to scrape all the ads and it will use the credits (one page = one credit)"},"extract_text":{"type":"boolean","default":false,"description":"Extract text content from ad creatives"},"webhook_url":{"type":"string","description":"Webhook URL for async delivery"},"data_provider":{"type":"string","enum":["rapidapi","apify"],"description":"Data provider to use"}}}}}}
```

## The LinkedInKeywordSearchRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"LinkedInKeywordSearchRequest":{"type":"object","required":["email","api_key","keyword"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"keyword":{"type":"string","description":"Company website"},"country":{"type":"string","description":"The 2-digit country code"},"dateOption":{"type":"string","enum":["current-month","current-year","last-30-days","last-year","custom-date-range"],"description":"Valid options: current-month, current-year, custom-date-range, last-30-days, last-year or custom-date-range"},"startDate":{"type":"string","format":"date","description":"YYYY-MM-DD format (e.g. 2026-01-15)"},"endDate":{"type":"string","format":"date","description":"YYYY-MM-DD format (e.g. 2026-01-15)"},"continuation_token":{"type":"string","description":"A token that you can use to scrape the next page"}}}}}}
```

## The FacebookAdSearchRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"FacebookAdSearchRequest":{"type":"object","required":["email","api_key","keyword"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"keyword":{"type":"string","description":"The keyword you want to use in your search"},"country_code":{"type":"string","description":"To limit results to one specific country"},"continuation_token":{"type":"string","description":"Token for paginating through results"},"all_ads":{"type":"boolean","default":false,"description":"Return all ads (auto-paginate)"}}}}}}
```

## The LinkedInRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"LinkedInRequest":{"type":"object","required":["email","api_key"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"linkedin_page_id":{"type":"string","description":"LinkedIn Page ID"},"company_domain":{"type":"string","description":"Company website"},"linkedin_page_ids":{"type":"array","items":{"type":"string"},"description":"Multiple LinkedIn page IDs for batch mode"},"company_domains":{"type":"array","items":{"type":"string"},"description":"Multiple company domains for batch mode"},"continuation_token":{"type":"string","description":"Token used to grab the next set of ads"},"extract":{"type":"string","description":"Extract specific data. Use 'number_of_ads' to return only the ad count."},"all_ads":{"type":"boolean","default":false,"description":"This will automatically use the continuation_token and scrape all the pages, returning all available ads. Works only with a webhook_url as it needs a place to send each page, one by one. Warning: use this cautiously because there is no way of stopping it. If you use this on a domain that runs 10000 ads, it will try to scrape all the ads and it will use the credits (one page = one credit)"},"live_ads":{"type":"boolean","default":false,"description":"Only return currently active ads"},"webhook_url":{"type":"string","description":"Webhook URL where the data will be returned"},"data_provider":{"type":"string","enum":["rapidapi","apify"],"description":"Data provider to use"}}}}}}
```

## The GoogleShoppingRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"GoogleShoppingRequest":{"type":"object","required":["api_key","email","company_domain"],"properties":{"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"},"company_domain":{"type":"string","description":"Company website"},"shopping":{"type":"boolean","default":false,"description":"When true, use Railway parser for direct synchronous results. When false, use DataForSEO (async, poll with /google_shopping_status)."}}}}}}
```

## The GoogleShoppingStatusRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"GoogleShoppingStatusRequest":{"type":"object","required":["id","api_key","email"],"properties":{"id":{"type":"string","description":"The id you received as response"},"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"}}}}}}
```

## The TikTokSearchRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"TikTokSearchRequest":{"type":"object","required":["keyword","api_key","email"],"properties":{"keyword":{"type":"string","description":"Your search query"},"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"},"country_code":{"type":"string","description":"Use if you want to limit the search to only one country"}}}}}}
```

## The TikTokAdDetailsRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"TikTokAdDetailsRequest":{"type":"object","required":["id","api_key","email"],"properties":{"id":{"type":"string","description":"Ad id"},"api_key":{"type":"string","description":"Adyntel API key"},"email":{"type":"string","description":"Adyntel account email"}}}}}}
```

## The KeywordsRequest object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"KeywordsRequest":{"type":"object","required":["email","api_key","company_domain"],"properties":{"email":{"type":"string","description":"Adyntel account email"},"api_key":{"type":"string","description":"Adyntel API key"},"company_domain":{"type":"string","description":"Company website (without www or http)"},"language":{"type":"string","default":"English","description":"Language for keyword results"},"limit":{"type":"integer","default":1,"description":"Number of results to return"}}}}}}
```

## The DomainKeywordsResponse object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"DomainKeywordsResponse":{"type":"object","properties":{"organic":{"type":"object","properties":{"count":{"type":"integer","description":"Total organic keywords count"},"estimated_traffic":{"type":"integer","description":"Estimated organic traffic"},"pos_1":{"type":"integer","description":"Keywords in position 1"},"pos_2_3":{"type":"integer","description":"Keywords in positions 2-3"},"pos_4_10":{"type":"integer","description":"Keywords in positions 4-10"},"pos_11_20":{"type":"integer","description":"Keywords in positions 11-20"},"pos_21_30":{"type":"integer","description":"Keywords in positions 21-30"},"pos_31_40":{"type":"integer","description":"Keywords in positions 31-40"},"pos_41_50":{"type":"integer","description":"Keywords in positions 41-50"},"pos_51_60":{"type":"integer","description":"Keywords in positions 51-60"},"pos_61_70":{"type":"integer","description":"Keywords in positions 61-70"},"pos_71_80":{"type":"integer","description":"Keywords in positions 71-80"},"pos_81_90":{"type":"integer","description":"Keywords in positions 81-90"},"pos_91_100":{"type":"integer","description":"Keywords in positions 91-100"},"is_new":{"type":"integer","description":"Newly ranked keywords"},"is_up":{"type":"integer","description":"Keywords that moved up"},"is_down":{"type":"integer","description":"Keywords that moved down"},"is_lost":{"type":"integer","description":"Keywords that were lost"}}},"organic_percentages":{"type":"object","description":"Percentage distribution for each organic position range and trend (pos_1, pos_2_3, ..., is_new, is_up, is_down, is_lost)"},"paid":{"type":"object","properties":{"count":{"type":"integer","description":"Total paid keywords count"},"estimated_traffic":{"type":"integer","description":"Estimated paid traffic"},"estimated_ad_budget":{"type":"integer","description":"Estimated advertising budget"},"estimated_avg_cpc":{"type":"number","description":"Estimated average cost per click"}}},"paid_percentages":{"type":"object","description":"Percentage distribution for paid keyword position ranges and trends"}}}}}}
```

## The JobStartedResponse object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"JobStartedResponse":{"type":"object","properties":{"status":{"type":"string"},"jobId":{"type":"string","format":"uuid","description":"Unique job ID. Track via GET /track/jobs and /track/results."}}}}}}
```

## The ErrorResponse object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"ErrorResponse":{"type":"object","properties":{"message":{"type":"string"}}}}}}
```

## The DetailErrorResponse object

```json
{"openapi":"3.0.3","info":{"title":"Adyntel API","version":"1.0.0"},"components":{"schemas":{"DetailErrorResponse":{"type":"object","properties":{"detail":{"type":"string"}}}}}}
```
