---
type: "firecrawl-provider"
description: "Facebook, Instagram, LinkedIn, Google, and TikTok ad library research, plus a domain's paid and organic keywords."
use_when: "One page of Facebook and Instagram ads for a company, a Facebook page, or a keyword.\n\nOne page of LinkedIn ads for a company, a LinkedIn page, or a keyword.\n\nOne page of Google ads for a company, or the paid and organic keyword overview for a domain.\n\nTikTok brand ads for a company, with optional influencer ads."
categories: "Marketing"
capabilities: 7
pricing: "9–18 credits per billed unit; see each capability for its unit and maximum."
---
# Adyntel on Firecrawl Alexandria

Facebook, Instagram, LinkedIn, Google, and TikTok ad library research, plus a domain's paid and organic keywords.

- Categories: Marketing
- Category index: [Marketing category](https://alexandria.firecrawl.dev/agents/categories/marketing)
- Provider key: `adyntel`
- Access: Firecrawl credits
- Cost (Meta ads for a company): 9 credits per Adyntel credit
- Cost (Meta ads by keyword): 9 credits per Adyntel credit
- Cost (LinkedIn ads for a company): 9 credits per Adyntel credit
- Cost (LinkedIn ads by keyword): 9 credits per Adyntel credit
- Cost (Google ads for a company): 9 credits per Adyntel credit
- Cost (Paid and organic keywords): 18 credits per keyword overview
- Cost (TikTok ads for a company): 9 credits per Adyntel credit

## More

- [Human guide](https://www.firecrawl.dev/app/alexandria/adyntel)
- [OpenAPI spec](https://alexandria.firecrawl.dev/agents/providers/adyntel/openapi.json)

## Capabilities

- [Meta ads for a company](https://alexandria.firecrawl.dev/agents/providers/adyntel/meta-ads/library/advertiser): Ads in results. The page also has page_id, country_code, continuation_token, number_of_ads, and is_result_complete. A company lookup's recorded page uses ad objects.
- [Meta ads by keyword](https://alexandria.firecrawl.dev/agents/providers/adyntel/meta-ads/library/search): Matches in results. A recorded search page nests each collation as an array of ad objects. The page also has query, country_code, continuation_token, number_of_ads, and is_result_complete.
- [LinkedIn ads for a company](https://alexandria.firecrawl.dev/agents/providers/adyntel/linkedin/company-ads): Ads in ads. The page also has page_id, total_ads, continuation_token, and is_last_page. extract=number_of_ads can return a count without an ad list.
- [LinkedIn ads by keyword](https://alexandria.firecrawl.dev/agents/providers/adyntel/linkedin/keyword-search): Ads in ads. The page also has total_ads, has_more, and continuation_token.
- [Google ads for a company](https://alexandria.firecrawl.dev/agents/providers/adyntel/google/ads): Ads in ads. The page also has continuation_token, country_code, and total_ad_count. total_ad_count 0 is an empty page and costs nothing.
- [Paid and organic keywords](https://alexandria.firecrawl.dev/agents/providers/adyntel/google/keywords): One overview. organic and paid hold counts, traffic, and, for paid, estimated budget and CPC. The percentage objects split those counts.
- [TikTok ads for a company](https://alexandria.firecrawl.dev/agents/providers/adyntel/tiktok-ads/company): Brand ads in brand_ads. The page also has handle, advertiser_data, and continuation_tokens. influencers is present only when influencer_ads was true.

## 1. Choose this provider when

One page of Facebook and Instagram ads for a company, a Facebook page, or a keyword.

One page of LinkedIn ads for a company, a LinkedIn page, or a keyword.

One page of Google ads for a company, or the paid and organic keyword overview for a domain.

TikTok brand ads for a company, with optional influencer ads.

## 2. Minimal request

Call `POST https://api.firecrawl.dev/v2/scrape` with `{ alexandria: { provider, capability, options } }`. For a batch, send `{ alexandria: [...] }` with up to 10 calls.

```json
{
  "provider": "adyntel",
  "capability": "meta-ads/library/advertiser",
  "options": {
    "company_domain": "<company_domain>"
  }
}
```

## 3. Add provider options

Use only the options needed for the task:

- `company_domain` (string): Company hostname, such as nike.com. No scheme, path, or www prefix. Send this or facebook_url. Example: `<company_domain>`
- `facebook_url` (string): Facebook page URL starting with https://. Send this or company_domain. Example: `<facebook_url>`
- `country_code` (string): One ISO country code, or ALL. A list of countries is a separate webhook job and is not accepted here. Example: `<country_code>`
- `continuation_token` (string): Token from the previous page. One page is returned per call. Example: `<continuation_token>`
- `media_type` (string): Creative filter: image, meme, image_and_meme, video. Example: `<media_type>`
- `active_status` (string): inactive or all. Omit it for active ads only. Example: `<active_status>`

## 4. Request through your preferred interface

### JavaScript

```javascript
const result = await firecrawl.scrape({
  alexandria: {
    provider: "adyntel",
    capability: "meta-ads/library/advertiser",
    options: {
      company_domain: "<company_domain>",
    },
  },
});
```

### Python

```python
result = firecrawl.scrape_alexandria({
  "provider": "adyntel",
  "capability": "meta-ads/library/advertiser",
  "options": {
    "company_domain": "<company_domain>"
  }
})
```

### cURL

```sh
curl https://api.firecrawl.dev/v2/scrape \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "alexandria": {
    "provider": "adyntel",
    "capability": "meta-ads/library/advertiser",
    "options": {
      "company_domain": "<company_domain>"
    }
  }
}'
```

### CLI

```sh
firecrawl scrape 'adyntel/meta-ads/library/advertiser' \
  --options '{"company_domain":"<company_domain>"}'
```


### MCP

Call the FCX MCP retrieve tool with this object:

```json
{
  "provider": "adyntel",
  "capability": "meta-ads/library/advertiser",
  "options": {
    "company_domain": "<company_domain>"
  }
}
```

Ask for only the returned fields needed by the task.

## 5. Full request shape

```json
{
  "provider": "adyntel",
  "capability": "meta-ads/library/advertiser",
  "options": {
    "company_domain": "<company_domain>"
  }
}
```

## 6. Response data

The response includes `success`, `provider`, `capability`, `creditsCost` and `data`. This example shows the provider payload in `data`:

```json
{
  "results": [
    {
      "ad_archive_id": "<ad_archive_id>",
      "page_id": "<page_id>",
      "page_name": "<page_name>",
      "is_active": false,
      "publisher_platform": [],
      "snapshot": {}
    }
  ]
}
```

## API reference-derived contract

The following capability contract is generated from the same normalized Alexandria API reference exposed in the API spec.

### Meta ads for a company

- Capability: `meta-ads/library/advertiser`
- Description: Ads in results. The page also has page_id, country_code, continuation_token, number_of_ads, and is_result_complete. A company lookup's recorded page uses ad objects.
- Instructions: Read one page of Facebook and Instagram ads for a company domain or a Facebook page. 9 credits when results is not empty. An empty page and HTTP 204 cost nothing. Send continuation_token for the next page.
- Cost: 9 credits per Adyntel credit
- Capability file: [Meta ads for a company](https://alexandria.firecrawl.dev/agents/providers/adyntel/meta-ads/library/advertiser)

Accepted options:
- `company_domain` (string): Company hostname, such as nike.com. No scheme, path, or www prefix. Send this or facebook_url. Example: `<company_domain>`
- `facebook_url` (string): Facebook page URL starting with https://. Send this or company_domain. Example: `<facebook_url>`
- `country_code` (string): One ISO country code, or ALL. A list of countries is a separate webhook job and is not accepted here. Example: `<country_code>`
- `continuation_token` (string): Token from the previous page. One page is returned per call. Example: `<continuation_token>`
- `media_type` (string): Creative filter: image, meme, image_and_meme, video. Example: `<media_type>`
- `active_status` (string): inactive or all. Omit it for active ads only. Example: `<active_status>`

Response schema example:
```json
{
  "results": [
    {
      "ad_archive_id": "<ad_archive_id>",
      "page_id": "<page_id>",
      "page_name": "<page_name>",
      "is_active": false,
      "publisher_platform": [],
      "snapshot": {}
    }
  ]
}
```

### Meta ads by keyword

- Capability: `meta-ads/library/search`
- Description: Matches in results. A recorded search page nests each collation as an array of ad objects. The page also has query, country_code, continuation_token, number_of_ads, and is_result_complete.
- Instructions: Search the Meta ad library by keyword and read one page. 9 credits when results is not empty. An empty page and HTTP 204 cost nothing.
- Cost: 9 credits per Adyntel credit
- Capability file: [Meta ads by keyword](https://alexandria.firecrawl.dev/agents/providers/adyntel/meta-ads/library/search)

Accepted options:
- `keyword` (string, required): Keyword to search in the Meta ad library. Example: `<keyword>`
- `country_code` (string): One ISO country code, or ALL. Example: `<country_code>`
- `continuation_token` (string): Token from the previous page. Example: `<continuation_token>`

Response schema example:
```json
{
  "results": [
    {
      "ad_archive_id": "<ad_archive_id>",
      "page_id": "<page_id>",
      "page_name": "<page_name>",
      "is_active": false,
      "publisher_platform": [],
      "snapshot": {}
    }
  ]
}
```

### LinkedIn ads for a company

- Capability: `linkedin/company-ads`
- Description: Ads in ads. The page also has page_id, total_ads, continuation_token, and is_last_page. extract=number_of_ads can return a count without an ad list.
- Instructions: Read one page of LinkedIn ads for a company domain or a LinkedIn page id. 9 credits when ads is not empty, or when extract is number_of_ads. An empty ad list and HTTP 204 cost nothing.
- Cost: 9 credits per Adyntel credit
- Capability file: [LinkedIn ads for a company](https://alexandria.firecrawl.dev/agents/providers/adyntel/linkedin/company-ads)

Accepted options:
- `company_domain` (string): Company hostname, such as hubspot.com. Send this or linkedin_page_id. Example: `<company_domain>`
- `linkedin_page_id` (string): LinkedIn page id. Sent as a string. Send this or company_domain. Example: `<linkedin_page_id>`
- `continuation_token` (string): Token from the previous page. Example: `<continuation_token>`
- `extract` (string): Set to number_of_ads to return the count instead of the ad page. Example: `<extract>`
- `live_ads` (boolean): When true, only ads that are live. Omit it for the default, which is false. Example: `false`

Response schema example:
```json
{
  "ads": [
    {
      "ad_id": "<ad_id>",
      "type": "<type>",
      "creative_type": "<creative_type>",
      "advertiser": {},
      "commentary": {},
      "view_details_link": "<view_details_link>"
    }
  ]
}
```

### LinkedIn ads by keyword

- Capability: `linkedin/keyword-search`
- Description: Ads in ads. The page also has total_ads, has_more, and continuation_token.
- Instructions: Search the LinkedIn ad library by keyword and read one page. 9 credits when ads is not empty. An empty page and HTTP 204 cost nothing.
- Cost: 9 credits per Adyntel credit
- Capability file: [LinkedIn ads by keyword](https://alexandria.firecrawl.dev/agents/providers/adyntel/linkedin/keyword-search)

Accepted options:
- `keyword` (string, required): Keyword to search in the LinkedIn ad library. Example: `<keyword>`
- `country` (string): One ISO country code. Example: `<country>`
- `dateOption` (string): Date window: current-month, current-year, last-30-days, last-year. A custom range is not on this call. Example: `<dateOption>`
- `continuation_token` (string): Token from the previous page. Example: `<continuation_token>`

Response schema example:
```json
{
  "ads": [
    {
      "ad_id": "<ad_id>",
      "type": "<type>",
      "creative_type": "<creative_type>",
      "advertiser": {},
      "commentary": {},
      "view_details_link": "<view_details_link>"
    }
  ]
}
```

### Google ads for a company

- Capability: `google/ads`
- Description: Ads in ads. The page also has continuation_token, country_code, and total_ad_count. total_ad_count 0 is an empty page and costs nothing.
- Instructions: Read one page of Google search, image, or video ads for a company domain. 9 credits when ads is not empty, or 18 when extract_text is true and ads come back. An empty page, total_ad_count 0, and HTTP 204 cost nothing.
- Cost: 9 credits per Adyntel credit
- Capability file: [Google ads for a company](https://alexandria.firecrawl.dev/agents/providers/adyntel/google/ads)

Accepted options:
- `company_domain` (string, required): Company hostname, such as tesla.com. Example: `<company_domain>`
- `media_type` (string): Creative filter: text, image, video. Omit it for every type. all is not a separate value on this call. Example: `<media_type>`
- `continuation_token` (string): Token from the previous page. Send the same filters again with it. Example: `<continuation_token>`
- `extract_text` (boolean): When true, include text read from the creatives. Costs one extra credit only when ads are returned. The Google guide spells this extract-text; this call sends extract_text. Example: `false`

Response schema example:
```json
{
  "ads": [
    {
      "advertiser_id": "<advertiser_id>",
      "advertiser_name": "<advertiser_name>",
      "creative_id": "<creative_id>",
      "format": "<format>",
      "start": "<start>",
      "last_seen": "<last_seen>",
      "original_url": "<original_url>",
      "variants": []
    }
  ]
}
```

### Paid and organic keywords

- Capability: `google/keywords`
- Description: One overview. organic and paid hold counts, traffic, and, for paid, estimated budget and CPC. The percentage objects split those counts.
- Instructions: Compare paid and organic keyword counts, traffic, budget, and CPC for one domain. 18 credits when the overview comes back. HTTP 204 costs nothing. The page size is 1.
- Cost: 18 credits per keyword overview
- Capability file: [Paid and organic keywords](https://alexandria.firecrawl.dev/agents/providers/adyntel/google/keywords)

Accepted options:
- `company_domain` (string, required): Company hostname, such as tesla.com. Example: `<company_domain>`
- `language` (string): Language name for the overview. Omit it to send English. Example: `<language>`
- `limit` (number): Must be 1. Omit it to send 1. Example: `1`

Response schema example:
```json
{
  "organic": {},
  "organic_percentages": {},
  "paid": {},
  "paid_percentages": {}
}
```

### TikTok ads for a company

- Capability: `tiktok-ads/company`
- Description: Brand ads in brand_ads. The page also has handle, advertiser_data, and continuation_tokens. influencers is present only when influencer_ads was true.
- Instructions: Read TikTok brand ads for a company domain. 9 credits when brand ads come back, or 18 when influencer_ads is true and ads come back. HTTP 204 and a page with no ads cost nothing. The next-page token is returned but is not sent back on this call.
- Cost: 9 credits per Adyntel credit
- Capability file: [TikTok ads for a company](https://alexandria.firecrawl.dev/agents/providers/adyntel/tiktok-ads/company)

Accepted options:
- `company_domain` (string, required): The brand's own hostname, such as gymshark.com. tiktok.com is rejected. Example: `<company_domain>`
- `influencer_ads` (boolean): When true, also return influencers posting sponsored content, each with a sample ad. Costs one extra credit when any ads come back. Example: `false`

Response schema example:
```json
{
  "brand_ads": [
    {
      "aweme_id": "<aweme_id>",
      "url": "<url>",
      "desc": "<desc>",
      "is_ad": false,
      "region": "<region>",
      "stats": {}
    }
  ]
}
```
