# 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"}}}}}}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.adyntel.com/openapi-docs/existing-endpoints.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
