---
title: "Scrape Creators API / Search Ads"
description: "ScrapeCreators tool scrapecreators-linkedin-ads-search on looot: input fields, $0.00188 per call, output shape, and code to run it with curl, JavaScript or Python."
sidebar:
  hidden: true
---

{/* Generated by scripts/generate-api-reference.mjs from data/api-reference.json. Do not edit. */}

Searches the LinkedIn Ad Library by company name, keyword, or companyId with optional country and date filters. Custom date filtering requires both startDate and endDate. LinkedIn accepts dates from the date one year ago through yesterday. Each ad includes id, description, headline, adType, advertiser, targeting details, image or video URLs, totalImpressions, and impressionsByCountry. Date and impression fields are nullable when LinkedIn does not expose them on the public ad page. Supports pagination via paginationToken. Send one of: company, keyword, companyId.

- **Tool id:** `scrapecreators-linkedin-ads-search`
- **Provider:** [ScrapeCreators](/providers/scrapecreators)
- **Job:** [Search the LinkedIn ad library](/reference/jobs/ads-linkedin-search) (`ads.linkedin.search`)
- **Price:** $0.00188 per call. A call that fails at the provider costs $0.

## Inputs

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `company` | string | no | The company name to search for. 'Microsoft' for example. Example: "microsoft" |
| `companyId` | string | no | The company id to search for. |
| `countries` | string | no | Comma separated list of countries. Example: US,CA,MX. Example: "US,CA,MX" |
| `endDate` | string | no | End date in YYYY-MM-DD format. Must be used with startDate and cannot be today or a future date. Example: "2026-09-01" |
| `keyword` | string | no | The keyword to search for. Example: "scraping" |
| `paginationToken` | string | no | Pagination token to paginate through results. |
| `startDate` | string | no | Start date in YYYY-MM-DD format. Must be used with endDate and cannot be earlier than the date one year ago. Example: "2026-01-01" |

## Output

Shape of the run's `result`, the expected shape, not yet checked against real answers:

```txt
{ ads: { id, url, image, video, adType, poster, headline, targeting: { language, location }, advertiser, description, creativeType, organicVideo, preRollVideo, carouselImages: unknown[], preRollAdvertiser }[], success, totalAds, isLastPage, credits_charged, credits_remaining }
```

## Run it

Every call needs your API token in `LOOOT_TOKEN`; [Sign in](/get-started/sign-in#use-the-token-in-scripts-and-agents) shows how to get one. Each run also needs a new idempotency key, so a retry never pays twice. With `wait: 30` the answer comes back inline when the run ends within 30 seconds. Otherwise you get the running run back: poll `GET /v1/runs/<runId>`.

Example input with placeholder values:

<CodeGroup>

```bash curl
curl -X POST "https://api.looot.ai/v1/runs" \
  -H "Authorization: Bearer $LOOOT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"endpointId":"scrapecreators-linkedin-ads-search","input":{"company":"microsoft","endDate":"2026-09-01","keyword":"scraping","companyId":"Example Inc","countries":"US,CA,MX","startDate":"2026-01-01","paginationToken":"<paginationToken>"},"wait":30}'
```

```js JavaScript
const response = await fetch("https://api.looot.ai/v1/runs", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.LOOOT_TOKEN}`,
    "Content-Type": "application/json",
    "Idempotency-Key": crypto.randomUUID(),
  },
  body: JSON.stringify({
    endpointId: "scrapecreators-linkedin-ads-search",
    input: {
      company: "microsoft",
      endDate: "2026-09-01",
      keyword: "scraping",
      companyId: "Example Inc",
      countries: "US,CA,MX",
      startDate: "2026-01-01",
      paginationToken: "<paginationToken>",
    },
    wait: 30,
  }),
});
const run = await response.json();
console.log(run.status, run.result);
```

```python Python
import os
import uuid

import requests

response = requests.post(
    "https://api.looot.ai/v1/runs",
    headers={
        "Authorization": f"Bearer {os.environ['LOOOT_TOKEN']}",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    json={
        "endpointId": "scrapecreators-linkedin-ads-search",
        "input": {
            "company": "microsoft",
            "endDate": "2026-09-01",
            "keyword": "scraping",
            "companyId": "Example Inc",
            "countries": "US,CA,MX",
            "startDate": "2026-01-01",
            "paginationToken": "<paginationToken>",
        },
        "wait": 30,
    },
    timeout=90,
)
run = response.json()
print(run["status"], run.get("result"))
```

</CodeGroup>

To let looot pick among every provider of this job instead, send `job:ads.linkedin.search` as `endpointId`; see [the job page](/reference/jobs/ads-linkedin-search).
