# SpyFu Scraper | SEO, PPC and Competitor Data (`silentflow/spyfu-scraper`) Actor

SpyFu scraper for SEO and PPC competitor research: 20 domains in 20 seconds, 44 fields each. Get organic keywords, clicks and traffic value, Google Ads budget, paid keywords, domain strength, top competitors, best and new keywords and monthly history. Start from a domain, keyword or link. No login.

- **URL**: https://apify.com/silentflow/spyfu-scraper.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** SEO tools, Other, Lead generation
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.91 / 1,000 domains

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## SpyFu Scraper | SEO, PPC and Competitor Data (2026)

**Every number SpyFu shows for a domain, one flat row each: organic traffic and its value, ad budget, paid keywords, top competitors, best keywords and up to 20 years of monthly history. 20 domains in about 20 seconds.**

### Why choose this actor?

Opening SpyFu one domain at a time to fill a competitor report? Wondering who else bids on the keyword that costs you the most? Cleaning up exports where every number is text and every competitor list is one long string?

- <strong>42 fields on every domain, as real numbers.</strong> On our default test run, 42 data fields were filled on every one of the 20 domains: organic keywords, organic clicks and their monthly value, paid keywords, paid clicks, ad budget, average positions, domain strength, the traffic split, month-over-month and year-over-year changes, newly ranked, gained and lost keywords, the top 5 SEO and PPC competitors with the keywords they share, the top and newest organic and paid keywords with their search volume and cost per click, keywords per country and 12 months of history. The most used SpyFu actor lists 27 fields in its sample output, with numbers written as text and its lists as comma-separated strings.
- <strong>Start from a keyword, not only a domain.</strong> Type a domain, a keyword or paste a link (a SpyFu page or any web page): three ways in, where the most used SpyFu actor takes domains only. A keyword brings up the domain ranked first on Google and every domain SpyFu saw bidding on it, the steadiest bidders first: <code>crm software</code> brought up 294 domains, led by salesforce.com, zoho.com, monday.com, hubspot.com and pipedrive.com, each delivered as a full row.
- <strong>Nothing to fill before the first run.</strong> No field is required. The prefilled form ran as is and delivered 20 domains in 21 seconds: the 3 domains it lists, then 17 domains that compete on <code>running shoes</code>. The most used SpyFu actor will not start until its domain field is filled.

### Try your first domains

Paste this input in the actor's Input tab, or keep the prefilled one, and press Start:

```json
{
    "domains": ["nike.com", "hubspot.com", "shopify.com"],
    "keywords": ["running shoes"],
    "country": "us",
    "maxItems": 20,
    "historyMonths": 12
}
```

You get 20 domains in about 20 seconds: nike.com, hubspot.com and shopify.com, then the domains that compete on running shoes (ebay.com, ranked first on Google, then on.com, hoka.com, newbalance.com, brooksrunning.com and more). Each one is a row with its traffic, ad budget, competitors, keywords and a year of monthly history. The Apify Free plan covers runs like this one every month, so you can check the data before you point it at your whole market.

![How it works](https://api.apify.com/v2/key-value-stores/YXm81xySHg6uRkewS/records/spyfu-scraper-how-it-works-v1.png)

### Copy to your AI assistant

Paste this block into Claude, ChatGPT or Cursor to give it full context about this scraper:

```
You have access to the SpyFu Scraper on Apify: silentflow/spyfu-scraper
It reads SpyFu (spyfu.com) competitor data. One dataset row per domain, for one SpyFu country database per run.

Input (no field is required, give at least one of the first three):
- domains (array of strings): domains or web addresses. Examples: "nike.com", "hubspot.com", "https://www.shopify.com/pricing" (read as shopify.com)
- keywords (array of strings): search terms. Each one brings up the domain ranked first on Google plus every domain SpyFu saw bidding on it in Google Ads, steadiest bidders first, and each becomes a full domain row. Examples: "running shoes", "crm software"
- startUrls (array of {url}): SpyFu pages (https://www.spyfu.com/overview/domain?query=nike.com, any /seo/ or /ppc/ domain page, https://www.spyfu.com/keyword/overview?query=running+shoes) or any web page, read as its domain
- country (string, default "us"): SpyFu database. One of us, gb, ar, au, at, be, br, ca, cl, cz, dk, fi, fr, de, in, ie, it, jp, mx, nl, nz, no, pl, pt, sg, za, es, se, ch, tr, ua, ve. Also accepts 3-letter codes (gbr) and English names (United Kingdom); "uk" works.
- maxItems (integer, default 100): domains to deliver for the whole run. Typed domains come first, then keyword domains.
- historyMonths (integer, default 12, 0 to 300): months of history in monthlyHistory, latest first. 300 keeps everything (back to 2006 for old domains), 0 leaves it out.

Output per domain (42 data fields, flat, camelCase, numbers as numbers, null when SpyFu has no value, dates RFC 3339):
- identity: id (the domain, stable), domain, url (SpyFu overview page), websiteUrl, countryCode (ISO, GB for the UK)
- SEO, latest month: organicKeywords, monthlyOrganicClicks, monthlyOrganicValue, averageOrganicRank, organicKeywordsMoMPercent, organicClicksMoMPercent, organicClicksYoYPercent, newlyRankedKeywords, gainedRankKeywords, lostRankKeywords
- PPC, latest month: paidKeywords, monthlyPaidClicks, monthlyAdBudget, averageAdPosition, paidClicksMoMPercent, adBudgetMoMPercent, adBudgetYoYPercent
- whole domain: domainStrength (0 to 100), organicTrafficShare, paidTrafficShare (percent of clicks), latestMonth, trackedSince, monthsTracked
- competitors: topOrganicCompetitor, topPaidCompetitor, organicCompetitors[] and paidCompetitors[] ({domain, commonKeywords}, 5 each)
- keywords: topOrganicKeyword, topPaidKeyword, topOrganicKeywords[] and newOrganicKeywords[] ({keyword, position, positionChange, searchVolume, monthlyClicks, costPerClick, rankingDifficulty, url}, 5 each), topPaidKeywords[] and newPaidKeywords[] ({keyword, searchVolume, costPerClick, monthlyCost, rankingDifficulty, paidCompetitors, lastSeenAt}, 5 each)
- countries: primaryCountry, countriesTracked, keywordsByCountry[] ({countryCode, organicKeywords})
- history: monthlyHistory[] ({month, organicKeywords, monthlyOrganicClicks, monthlyOrganicValue, averageOrganicRank, paidKeywords, monthlyPaidClicks, monthlyAdBudget, averageAdPosition, domainStrength})
- meta: searchKeyword (on rows found through a keyword), scrapedAt

Use apify-client for Python or JavaScript: client.actor("silentflow/spyfu-scraper").call(run_input=...), then read the default dataset.
```

### How to scrape SpyFu competitor data

#### Get the SEO and PPC numbers of your competitors

List the domains you want side by side. Each one comes back as a row you can sort by organic clicks, ad budget or domain strength.

```json
{
    "domains": ["hubspot.com", "salesforce.com", "pipedrive.com", "zoho.com"]
}
```

#### Find every domain bidding on a keyword

One keyword gives the domain ranked first on Google, then every domain SpyFu saw bidding on it, the ones seen in the most months first. Our run on <code>crm software</code> delivered salesforce.com, zoho.com, monday.com, hubspot.com, getjobber.com, pipedrive.com and attio.com among the first 15.

```json
{
    "keywords": ["crm software"],
    "maxItems": 15
}
```

#### Compare UK retailers over two years

Pick another SpyFu country and keep more history. Our run on these four UK sites took 5 seconds and returned 24 months each, from October 2024 to September 2026.

```json
{
    "domains": ["bbc.co.uk", "theguardian.com", "asos.com", "tesco.com"],
    "country": "gb",
    "historyMonths": 24,
    "maxItems": 10
}
```

### Input parameters

| Field | Type | Default | What it does |
|---|---|---|---|
| `domains` | array of strings | prefilled with 3 domains | Domains or web addresses to analyze. Each one becomes a row. |
| `keywords` | array of strings | prefilled with `running shoes` | Search terms. Each brings up the domain ranked first and the domains bidding on it, each as a full row. |
| `startUrls` | array of links | none | SpyFu domain or keyword pages, or any web page read as its domain. |
| `country` | string | `us` | The SpyFu country database to read, 32 countries. |
| `maxItems` | integer | `100` (prefill `20`) | Domains to deliver for the whole run. |
| `historyMonths` | integer | `12` | Months of history per row, `0` to `300`. |

No field is required. Give at least a domain, a keyword or a link.

#### Formats accepted

- **Domains**: `nike.com`, `www.nike.com`, `NIKE.com`, `https://www.nike.com/shoes?color=red` all read as `nike.com`. Subdomains are kept as typed (`shop.example.co.uk`). A line that is not a domain (`not a domain`) is skipped and named in the log, the others still run.
- **SpyFu links**: `https://www.spyfu.com/overview/domain?query=nike.com`, `https://www.spyfu.com/seo/overview/domain?query=nike.com`, `https://www.spyfu.com/ppc/keywords/domain?query=nike.com`, `https://www.spyfu.com/overview/url?query=https://www.nike.com/shoes` read the domain; `https://www.spyfu.com/keyword/overview?query=running+shoes` reads the keyword.
- **Keywords**: any search term, as you would type it on Google, dotted terms included (`node.js`, `asp.net`). A link typed in the keyword box (starting with `https://` or `www.`) is read as a domain.
- **Country**: a code (`us`, `gb`, `de`), a 3-letter code (`gbr`, `deu`) or an English name (`United Kingdom`, `Germany`). `uk` reads the United Kingdom. A country SpyFu does not cover stops the run with a message naming the choices.
- **Duplicates**: a domain typed twice, or found by both a domain and a keyword, is delivered once.

### What data can you extract from SpyFu?

Each row is one domain in one SpyFu country database. 42 data fields per row, grouped like this:

| Group | Fields |
|---|---|
| Identity | `id`, `domain`, `url`, `websiteUrl`, `countryCode` |
| SEO, latest month | `organicKeywords`, `monthlyOrganicClicks`, `monthlyOrganicValue`, `averageOrganicRank`, `organicKeywordsMoMPercent`, `organicClicksMoMPercent`, `organicClicksYoYPercent`, `newlyRankedKeywords`, `gainedRankKeywords`, `lostRankKeywords` |
| PPC, latest month | `paidKeywords`, `monthlyPaidClicks`, `monthlyAdBudget`, `averageAdPosition`, `paidClicksMoMPercent`, `adBudgetMoMPercent`, `adBudgetYoYPercent` |
| Whole domain | `domainStrength`, `organicTrafficShare`, `paidTrafficShare`, `latestMonth`, `trackedSince`, `monthsTracked` |
| Competitors | `topOrganicCompetitor`, `topPaidCompetitor`, `organicCompetitors`, `paidCompetitors` |
| Keywords | `topOrganicKeyword`, `topPaidKeyword`, `topOrganicKeywords`, `newOrganicKeywords`, `topPaidKeywords`, `newPaidKeywords` |
| Countries | `primaryCountry`, `countriesTracked`, `keywordsByCountry` |
| History | `monthlyHistory` |
| Meta | `searchKeyword` (rows found through a keyword), `scrapedAt` |

Inside the lists:

- each competitor has 2 fields: `domain` and `commonKeywords`, the number of keywords it shares with the row's domain;
- each organic keyword has 8: `keyword`, `position`, `positionChange`, `searchVolume`, `monthlyClicks` (the clicks this domain gets from it), `costPerClick`, `rankingDifficulty` (0 to 100) and `url`, the page that ranks;
- each paid keyword has 7: `keyword`, `searchVolume`, `costPerClick`, `monthlyCost`, `rankingDifficulty`, `paidCompetitors` (how many domains bid on it) and `lastSeenAt`, the latest month SpyFu saw this domain's ad on it;
- each country has 2: `countryCode` and `organicKeywords`;
- each month of history has 10: `month`, `organicKeywords`, `monthlyOrganicClicks`, `monthlyOrganicValue`, `averageOrganicRank`, `paidKeywords`, `monthlyPaidClicks`, `monthlyAdBudget`, `averageAdPosition` and `domainStrength`.

Good to know when you use the data:

- `id` is the domain itself, so a row joins on `id` from one month to the next. `url` is the domain's permanent SpyFu overview page.
- Dates are RFC 3339 in UTC. Monthly figures are dated on the first day of their month: `latestMonth` was `2026-09-01T00:00:00Z` on our run of 21 October 2026, since SpyFu refreshes its numbers once a month.
- Percent changes compare the latest month with the month before (`MoM`) and the same month a year earlier (`YoY`). They are `null` when the earlier month had no data or was zero.
- `organicTrafficShare` and `paidTrafficShare` split the domain's estimated clicks between Google results and Google Ads, in percent.
- Values are SpyFu's estimates, the same numbers its site shows for the domain.
- Keyword lists hold the top 5 rows SpyFu shows for each list. The totals (`organicKeywords`, `paidKeywords`, `newlyRankedKeywords` and the others) count every keyword.

#### Output example

One complete row from our default run, hubspot.com in the United States database:

```json
{
    "id": "hubspot.com",
    "domain": "hubspot.com",
    "url": "https://www.spyfu.com/overview/domain?query=hubspot.com",
    "websiteUrl": "https://hubspot.com",
    "countryCode": "US",
    "organicKeywords": 885500,
    "monthlyOrganicClicks": 911100,
    "monthlyOrganicValue": 13920000,
    "averageOrganicRank": 40.3,
    "organicKeywordsMoMPercent": -2.7,
    "organicClicksMoMPercent": -3,
    "organicClicksYoYPercent": -45.9,
    "newlyRankedKeywords": 283458,
    "gainedRankKeywords": 214245,
    "lostRankKeywords": 179718,
    "paidKeywords": 65860,
    "monthlyPaidClicks": 451100,
    "monthlyAdBudget": 1918000,
    "averageAdPosition": 2.4,
    "paidClicksMoMPercent": 2.5,
    "adBudgetMoMPercent": -4.9,
    "adBudgetYoYPercent": -29.5,
    "domainStrength": 72,
    "organicTrafficShare": 66.9,
    "paidTrafficShare": 33.1,
    "latestMonth": "2026-09-01T00:00:00Z",
    "trackedSince": "2006-11-01T00:00:00Z",
    "monthsTracked": 229,
    "topOrganicCompetitor": "mailchimp.com",
    "topPaidCompetitor": "attio.com",
    "organicCompetitors": [
        {
            "domain": "mailchimp.com",
            "commonKeywords": 26096
        },
        {
            "domain": "salesforce.com",
            "commonKeywords": 33288
        },
        {
            "domain": "shopify.com",
            "commonKeywords": 32939
        },
        {
            "domain": "neilpatel.com",
            "commonKeywords": 13228
        },
        {
            "domain": "wix.com",
            "commonKeywords": 21195
        }
    ],
    "paidCompetitors": [
        {
            "domain": "attio.com",
            "commonKeywords": 13054
        },
        {
            "domain": "monday.com",
            "commonKeywords": 18133
        },
        {
            "domain": "pipedrive.com",
            "commonKeywords": 11919
        },
        {
            "domain": "kintone.com",
            "commonKeywords": 8996
        },
        {
            "domain": "top5-crm.com",
            "commonKeywords": 2119
        }
    ],
    "topOrganicKeyword": "hubspot",
    "topPaidKeyword": "slack",
    "topOrganicKeywords": [
        {
            "keyword": "hubspot",
            "position": 1,
            "positionChange": 0,
            "searchVolume": 231000,
            "monthlyClicks": 37900,
            "costPerClick": 2.75,
            "rankingDifficulty": 8,
            "url": "https://www.hubspot.com/"
        },
        {
            "keyword": "crm",
            "position": 2,
            "positionChange": 1,
            "searchVolume": 247000,
            "monthlyClicks": 20700,
            "costPerClick": 25.2,
            "rankingDifficulty": 49,
            "url": "https://www.hubspot.com/products/crm"
        },
        {
            "keyword": "wordpress",
            "position": 6,
            "positionChange": null,
            "searchVolume": 554000,
            "monthlyClicks": 16000,
            "costPerClick": 2.32,
            "rankingDifficulty": 13,
            "url": "https://blog.hubspot.com/website/what-is-wordpress"
        },
        {
            "keyword": "github",
            "position": 13,
            "positionChange": 1,
            "searchVolume": 993000,
            "monthlyClicks": 13500,
            "costPerClick": 2.27,
            "rankingDifficulty": 10,
            "url": "https://blog.hubspot.com/website/what-is-github-used-for"
        },
        {
            "keyword": "google contacts",
            "position": 8,
            "positionChange": null,
            "searchVolume": 262000,
            "monthlyClicks": 5700,
            "costPerClick": 0.95,
            "rankingDifficulty": 9,
            "url": "https://blog.hubspot.com/marketing/the-ultimate-guide-to-google-contacts"
        }
    ],
    "newOrganicKeywords": [
        {
            "keyword": "wordpress",
            "position": 6,
            "positionChange": null,
            "searchVolume": 554000,
            "monthlyClicks": 16000,
            "costPerClick": 2.32,
            "rankingDifficulty": 13,
            "url": "https://blog.hubspot.com/website/what-is-wordpress"
        },
        {
            "keyword": "google contacts",
            "position": 8,
            "positionChange": null,
            "searchVolume": 262000,
            "monthlyClicks": 5700,
            "costPerClick": 0.95,
            "rankingDifficulty": 9,
            "url": "https://blog.hubspot.com/marketing/the-ultimate-guide-to-google-contacts"
        },
        {
            "keyword": "smart goals",
            "position": 15,
            "positionChange": null,
            "searchVolume": 199000,
            "monthlyClicks": 2400,
            "costPerClick": 1.25,
            "rankingDifficulty": 59,
            "url": "https://blog.hubspot.com/marketing/smart-goal-examples"
        },
        {
            "keyword": "google logo",
            "position": 9,
            "positionChange": null,
            "searchVolume": 105000,
            "monthlyClicks": 2000,
            "costPerClick": 1.18,
            "rankingDifficulty": 44,
            "url": "https://blog.hubspot.com/marketing/google-logo-history"
        },
        {
            "keyword": "new gmail account",
            "position": 7,
            "positionChange": null,
            "searchVolume": 74000,
            "monthlyClicks": 1800,
            "costPerClick": 0.54,
            "rankingDifficulty": 5,
            "url": "https://www.hubspot.com/email-signature-generator/set-up-gmail-account"
        }
    ],
    "topPaidKeywords": [
        {
            "keyword": "slack",
            "searchVolume": 1260000,
            "costPerClick": 0.55,
            "monthlyCost": 43571.7,
            "rankingDifficulty": 7,
            "paidCompetitors": 63,
            "lastSeenAt": "2026-05-01T00:00:00Z"
        },
        {
            "keyword": "shopify",
            "searchVolume": 870000,
            "costPerClick": 5.16,
            "monthlyCost": 229188.9,
            "rankingDifficulty": 9,
            "paidCompetitors": 127,
            "lastSeenAt": "2026-09-01T00:00:00Z"
        },
        {
            "keyword": "squarespace",
            "searchVolume": 603000,
            "costPerClick": 1.05,
            "monthlyCost": 41988,
            "rankingDifficulty": 7,
            "paidCompetitors": 127,
            "lastSeenAt": "2026-07-01T00:00:00Z"
        },
        {
            "keyword": "salesforce",
            "searchVolume": 420000,
            "costPerClick": 2.85,
            "monthlyCost": 98170.5,
            "rankingDifficulty": 6,
            "paidCompetitors": 127,
            "lastSeenAt": "2026-10-01T00:00:00Z"
        },
        {
            "keyword": "notion",
            "searchVolume": 412000,
            "costPerClick": 0.35,
            "monthlyCost": 981.6,
            "rankingDifficulty": 6,
            "paidCompetitors": 73,
            "lastSeenAt": "2026-04-01T00:00:00Z"
        }
    ],
    "newPaidKeywords": [
        {
            "keyword": "affiliate marketing",
            "searchVolume": 63500,
            "costPerClick": 6.32,
            "monthlyCost": 12449.1,
            "rankingDifficulty": 42,
            "paidCompetitors": 127,
            "lastSeenAt": "2026-10-01T00:00:00Z"
        },
        {
            "keyword": "chatgpt alternative",
            "searchVolume": 25000,
            "costPerClick": null,
            "monthlyCost": null,
            "rankingDifficulty": 28,
            "paidCompetitors": 95,
            "lastSeenAt": "2026-10-01T00:00:00Z"
        },
        {
            "keyword": "profit and loss template",
            "searchVolume": 3900,
            "costPerClick": 0.28,
            "monthlyCost": 16.2,
            "rankingDifficulty": 41,
            "paidCompetitors": 54,
            "lastSeenAt": "2026-10-01T00:00:00Z"
        },
        {
            "keyword": "free gantt chart software",
            "searchVolume": 1900,
            "costPerClick": null,
            "monthlyCost": null,
            "rankingDifficulty": 23,
            "paidCompetitors": 27,
            "lastSeenAt": "2026-09-01T00:00:00Z"
        },
        {
            "keyword": "chimamanda",
            "searchVolume": 1700,
            "costPerClick": 0.33,
            "monthlyCost": 0.3,
            "rankingDifficulty": 16,
            "paidCompetitors": 2,
            "lastSeenAt": "2026-08-01T00:00:00Z"
        }
    ],
    "primaryCountry": "US",
    "countriesTracked": 32,
    "keywordsByCountry": [
        {
            "countryCode": "US",
            "organicKeywords": 885500
        },
        {
            "countryCode": "GB",
            "organicKeywords": 423200
        },
        {
            "countryCode": "IN",
            "organicKeywords": 50530
        },
        {
            "countryCode": "AU",
            "organicKeywords": 38950
        },
        {
            "countryCode": "CA",
            "organicKeywords": 35600
        },
        {
            "countryCode": "DE",
            "organicKeywords": 20440
        },
        {
            "countryCode": "BR",
            "organicKeywords": 15650
        },
        {
            "countryCode": "FR",
            "organicKeywords": 11330
        },
        {
            "countryCode": "NL",
            "organicKeywords": 10050
        },
        {
            "countryCode": "SG",
            "organicKeywords": 8213
        },
        {
            "countryCode": "ZA",
            "organicKeywords": 7355
        },
        {
            "countryCode": "IE",
            "organicKeywords": 5595
        },
        {
            "countryCode": "IT",
            "organicKeywords": 4933
        },
        {
            "countryCode": "ES",
            "organicKeywords": 4269
        },
        {
            "countryCode": "UA",
            "organicKeywords": 3157
        },
        {
            "countryCode": "NO",
            "organicKeywords": 3037
        },
        {
            "countryCode": "BE",
            "organicKeywords": 2736
        },
        {
            "countryCode": "MX",
            "organicKeywords": 2652
        },
        {
            "countryCode": "DK",
            "organicKeywords": 2646
        },
        {
            "countryCode": "SE",
            "organicKeywords": 2354
        },
        {
            "countryCode": "PT",
            "organicKeywords": 2315
        },
        {
            "countryCode": "CH",
            "organicKeywords": 2253
        },
        {
            "countryCode": "NZ",
            "organicKeywords": 1939
        },
        {
            "countryCode": "AT",
            "organicKeywords": 1656
        },
        {
            "countryCode": "FI",
            "organicKeywords": 1620
        },
        {
            "countryCode": "JP",
            "organicKeywords": 1597
        },
        {
            "countryCode": "VE",
            "organicKeywords": 998
        },
        {
            "countryCode": "AR",
            "organicKeywords": 954
        },
        {
            "countryCode": "CZ",
            "organicKeywords": 917
        },
        {
            "countryCode": "PL",
            "organicKeywords": 900
        },
        {
            "countryCode": "CL",
            "organicKeywords": 769
        },
        {
            "countryCode": "TR",
            "organicKeywords": 556
        }
    ],
    "monthlyHistory": [
        {
            "month": "2026-09-01T00:00:00Z",
            "organicKeywords": 885500,
            "monthlyOrganicClicks": 911100,
            "monthlyOrganicValue": 13920000,
            "averageOrganicRank": 40.3,
            "paidKeywords": 65860,
            "monthlyPaidClicks": 451100,
            "monthlyAdBudget": 1918000,
            "averageAdPosition": 2.4,
            "domainStrength": 72
        },
        {
            "month": "2026-08-01T00:00:00Z",
            "organicKeywords": 910300,
            "monthlyOrganicClicks": 938900,
            "monthlyOrganicValue": 14500000,
            "averageOrganicRank": 40.8,
            "paidKeywords": 62160,
            "monthlyPaidClicks": 440000,
            "monthlyAdBudget": 2017000,
            "averageAdPosition": 2.4,
            "domainStrength": 72
        },
        {
            "month": "2026-07-01T00:00:00Z",
            "organicKeywords": 911700,
            "monthlyOrganicClicks": 903200,
            "monthlyOrganicValue": 14270000,
            "averageOrganicRank": 41.3,
            "paidKeywords": 60080,
            "monthlyPaidClicks": 435900,
            "monthlyAdBudget": 2165000,
            "averageAdPosition": 2.4,
            "domainStrength": 72
        },
        {
            "month": "2026-06-01T00:00:00Z",
            "organicKeywords": 1063000,
            "monthlyOrganicClicks": 964800,
            "monthlyOrganicValue": 17390000,
            "averageOrganicRank": 42.8,
            "paidKeywords": 57390,
            "monthlyPaidClicks": 415600,
            "monthlyAdBudget": 2164000,
            "averageAdPosition": 2.4,
            "domainStrength": 73
        },
        {
            "month": "2026-05-01T00:00:00Z",
            "organicKeywords": 1119000,
            "monthlyOrganicClicks": 977800,
            "monthlyOrganicValue": 18780000,
            "averageOrganicRank": 43.7,
            "paidKeywords": 47580,
            "monthlyPaidClicks": 328500,
            "monthlyAdBudget": 2175000,
            "averageAdPosition": 2.5,
            "domainStrength": 73
        },
        {
            "month": "2026-04-01T00:00:00Z",
            "organicKeywords": 1148000,
            "monthlyOrganicClicks": 1014000,
            "monthlyOrganicValue": 18970000,
            "averageOrganicRank": 44.3,
            "paidKeywords": 34660,
            "monthlyPaidClicks": 182600,
            "monthlyAdBudget": 2408000,
            "averageAdPosition": 2.7,
            "domainStrength": 73
        },
        {
            "month": "2026-03-01T00:00:00Z",
            "organicKeywords": 917500,
            "monthlyOrganicClicks": 1040000,
            "monthlyOrganicValue": 18480000,
            "averageOrganicRank": 44.7,
            "paidKeywords": 29099,
            "monthlyPaidClicks": 166900,
            "monthlyAdBudget": 2806000,
            "averageAdPosition": 2.8,
            "domainStrength": 66
        },
        {
            "month": "2026-02-01T00:00:00Z",
            "organicKeywords": 883800,
            "monthlyOrganicClicks": 970400,
            "monthlyOrganicValue": 11890000,
            "averageOrganicRank": 47.9,
            "paidKeywords": 25130,
            "monthlyPaidClicks": 151000,
            "monthlyAdBudget": 3188000,
            "averageAdPosition": 2.8,
            "domainStrength": 64
        },
        {
            "month": "2026-01-01T00:00:00Z",
            "organicKeywords": 945400,
            "monthlyOrganicClicks": 994100,
            "monthlyOrganicValue": 5653000,
            "averageOrganicRank": 47.8,
            "paidKeywords": 21900,
            "monthlyPaidClicks": 139100,
            "monthlyAdBudget": 3393000,
            "averageAdPosition": 2.8,
            "domainStrength": 61
        },
        {
            "month": "2025-12-01T00:00:00Z",
            "organicKeywords": 990700,
            "monthlyOrganicClicks": 1122000,
            "monthlyOrganicValue": 5901000,
            "averageOrganicRank": 47.1,
            "paidKeywords": 19520,
            "monthlyPaidClicks": 125400,
            "monthlyAdBudget": 5276000,
            "averageAdPosition": 2.8,
            "domainStrength": 62
        },
        {
            "month": "2025-11-01T00:00:00Z",
            "organicKeywords": 1361000,
            "monthlyOrganicClicks": 1412000,
            "monthlyOrganicValue": 8312000,
            "averageOrganicRank": 45.9,
            "paidKeywords": 6843,
            "monthlyPaidClicks": 5249,
            "monthlyAdBudget": 3396000,
            "averageAdPosition": 2.5,
            "domainStrength": 64
        },
        {
            "month": "2025-10-01T00:00:00Z",
            "organicKeywords": 1395000,
            "monthlyOrganicClicks": 1552000,
            "monthlyOrganicValue": 8382000,
            "averageOrganicRank": 45.9,
            "paidKeywords": 6914,
            "monthlyPaidClicks": 8376,
            "monthlyAdBudget": 3352000,
            "averageAdPosition": 2.6,
            "domainStrength": 64
        }
    ],
    "scrapedAt": "2026-10-21T15:31:24Z"
}
```

### Advanced usage

#### Follow a client and its competitors every month

Save this input as a task and schedule it monthly, after SpyFu's refresh. Each run gives one row per domain with its month-over-month and year-over-year changes already computed, so the report is a filter away.

```json
{
    "domains": ["hubspot.com", "salesforce.com", "pipedrive.com"],
    "historyMonths": 1
}
```

#### Keep a domain's whole history

Set `historyMonths` to 300 to keep every month SpyFu has. nike.com came back with 230 months, from June 2006 to September 2026, in 3 seconds: enough to chart two decades of organic and paid search.

```json
{
    "domains": ["nike.com"],
    "historyMonths": 300
}
```

#### Map who competes on a keyword in another country

Keywords run in the country you pick. <code>laufschuhe</code> in the German database brought up 31 domains; the first five of our run were 21run.com, lauf-bar.de, shop4runners.com, adidas.de and nike.com.

```json
{
    "keywords": ["laufschuhe"],
    "country": "de",
    "maxItems": 30
}
```

#### Paste the SpyFu pages you already have open

Copy the addresses of SpyFu domain or keyword pages, or any page of a website, and run them together. Our run on a semrush.com SpyFu page, an ahrefs.com blog page and the SpyFu keyword page for <code>seo tools</code> delivered 10 domains in 10 seconds: semrush.com, ahrefs.com, then techradar.com, seranking.com, similarweb.com, moz.com and others competing on the keyword.

```json
{
    "startUrls": [
        { "url": "https://www.spyfu.com/overview/domain?query=semrush.com" },
        { "url": "https://www.ahrefs.com/blog/" },
        { "url": "https://www.spyfu.com/keyword/overview?query=seo%20tools" }
    ],
    "maxItems": 10,
    "historyMonths": 6
}
```

#### Rank a prospect list by ad budget in Python

Agencies qualify leads by how much they spend on Google Ads. Run your list, then sort it:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("silentflow/spyfu-scraper").call(run_input={
    "domains": ["getjobber.com", "housecallpro.com", "servicetitan.com", "workiz.com"],
    "historyMonths": 0,
})
rows = client.dataset(run["defaultDatasetId"]).list_items().items
for r in sorted(rows, key=lambda r: r["monthlyAdBudget"] or 0, reverse=True):
    print(f'{r["domain"]:<22} ads {r["monthlyAdBudget"] or 0:>12,.0f}/month  '
          f'organic clicks {r["monthlyOrganicClicks"] or 0:>10,}  '
          f'YoY {r["organicClicksYoYPercent"]}%  top rival {r["topPaidCompetitor"]}')
```

The same dataset downloads as CSV, Excel or JSON from the run's Storage tab, or through the dataset API. Nested lists such as `organicCompetitors` become numbered columns in CSV and Excel.

### FAQ

**What is SpyFu?**
SpyFu is a competitor research tool for search marketing. For millions of domains it estimates the keywords they rank for on Google, the clicks those rankings bring, the keywords they buy ads on and their monthly ad budget, with history back to 2006. This actor reads those public numbers and hands them to you as rows.

**What does one row contain?**
One domain in one SpyFu country: 42 data fields covering its organic and paid search for the latest month, the changes against last month and last year, its 5 top SEO and PPC competitors, 5 top and 5 new organic and paid keywords with their metrics, its keywords per country and its monthly history.

**Do I need a SpyFu account or an API key?**
No. The actor reads what SpyFu shows to any visitor. No login, no API key, nothing to connect.

**How fresh is the data?**
SpyFu updates its estimates once a month. Every run reads SpyFu live, and `latestMonth` on each row tells you which month the numbers describe (September 2026 on our runs of 21 October 2026).

**Why do keyword lists stop at 5?**
SpyFu shows the first 5 rows of each keyword list to visitors without an account, and that is what each row carries. The totals are complete: `organicKeywords` counts every keyword the domain ranks for, `paidKeywords` every keyword it buys, `newlyRankedKeywords`, `gainedRankKeywords` and `lostRankKeywords` every movement of the month.

**What happens with a domain SpyFu does not track?**
It gives no row, so you never get an empty line for it. The log names it and the run's status says that SpyFu has no data for it in that country. Small sites often have data in one country only: `keywordsByCountry` on a known domain shows where SpyFu tracks it.

**Which countries can I read?**
The 32 countries SpyFu covers: the United States, the United Kingdom, Argentina, Australia, Austria, Belgium, Brazil, Canada, Chile, Czechia, Denmark, Finland, France, Germany, India, Ireland, Italy, Japan, Mexico, the Netherlands, New Zealand, Norway, Poland, Portugal, Singapore, South Africa, Spain, Sweden, Switzerland, Turkey, Ukraine and Venezuela. One country per run; run again for another one.

**How does a keyword turn into domains?**
The actor takes the domain ranked first on Google for the keyword, then every domain SpyFu saw bidding on it over the past months, ordered by the number of months it bid: a steady advertiser comes before a one-off. Each of them is then read as a full domain row, and `searchKeyword` says which keyword brought it in.

**How many domains can I run at once?**
As many as you like: `maxItems` sets the stop. A domain takes about a second; our default run delivered 20 in 21 seconds. Domains you type are always read before the domains of your keywords.

**Are the numbers exact?**
They are SpyFu's estimates, the same ones its website displays. Use them to compare domains with each other and over time, the way SpyFu users do.

**Can I get the data in Google Sheets or my own database?**
Yes. Every run's dataset downloads as CSV, Excel, JSON or XML, and the Apify API, the Python and JavaScript clients, webhooks and integrations such as Google Sheets, Make or Zapier read it directly.

### More SilentFlow scrapers

**🛒 E-commerce**

- **Pinterest** - [Pinterest Scraper | Pins, Boards and Profiles](https://apify.com/silentflow/pinterest-scraper-ppr)
- **JD** - [JD Products Scraper | JD.com Prices, Brands and Barcodes](https://apify.com/silentflow/jd-products-scraper)
- **Leboncoin** - [Leboncoin Scraper | Classified Ads, Prices and Sellers](https://apify.com/silentflow/leboncoin-scraper-ppr)
- **Leboncoin** - [Leboncoin Ad Details Scraper](https://apify.com/silentflow/leboncoin-details-scraper-ppr)
- **TikTok Shop** - [TikTok Shop Scraper | Products, Sellers and Creator Videos](https://apify.com/silentflow/tiktok-shop-scraper)
- **ImportYeti - US Customs Records, Suppliers & Trade Data** - [ImportYeti Scraper - US Customs Records, Suppliers & Trade Data](https://apify.com/silentflow/importyeti-scraper)
- **Back Market** - [Back Market Scraper | Refurbished Prices](https://apify.com/silentflow/backmarket-scraper-ppr)
- **Naver** - [Naver Scraper | Shopping Products, Prices and Reviews](https://apify.com/silentflow/naver-scraper)
- **Udemy Course** - [Udemy Course Scraper](https://apify.com/silentflow/udemy-scraper-ppe)
- **Naver** - [Naver Products Scraper | Shopping Prices, Sellers and Ratings](https://apify.com/silentflow/naver-products-scraper)
- **1688** - [1688 Scraper | Products, Details, Wholesale Prices, Suppliers](https://apify.com/silentflow/1688-scraper)
- **Amazon Seller** - [Amazon Seller Scraper | Emails, Phones and Ratings](https://apify.com/silentflow/amazon-seller-scraper)
- **Naver** - [Naver Reviews Scraper | Shopping Product Reviews](https://apify.com/silentflow/naver-reviews-scraper)
- **Store Leads Ecommerce** - [Store Leads Ecommerce Scraper](https://apify.com/silentflow/storeleads-scraper)
- **Store Leads** - [Store Leads Scraper | Shopify Data](https://apify.com/silentflow/storeleads-scraper-ppe)
- **Allegro** - [Allegro Scraper | Products, Prices and Sellers](https://apify.com/silentflow/allegro-scraper)
- **Leboncoin** - [Leboncoin Scraper](https://apify.com/silentflow/leboncoin-scraper)
- **Lowes** - [Lowes Products Scraper | Prices, Stock and Specs](https://apify.com/silentflow/lowes-products-scraper)
- **Mobile.de** - [Mobile.de Scraper](https://apify.com/silentflow/mobile-de-scraper)
- **Taobao** - [Taobao Scraper | Products, Details, Prices and Sellers](https://apify.com/silentflow/taobao-scraper)
- **Agoda** - [Agoda Scraper | Hotel Prices and Guest Ratings](https://apify.com/silentflow/agoda-scraper)
- **Alibaba** - [Alibaba Products Scraper | Wholesale Prices and MOQ](https://apify.com/silentflow/alibaba-products-scraper)
- **Avito** - [Avito Scraper | Listings, Prices and Sellers](https://apify.com/silentflow/avito-scraper)
- **Bring a Trailer** - [Bring a Trailer Scraper](https://apify.com/silentflow/bringatrailer-scraper)
- **Pinterest** - [Pinterest Scraper](https://apify.com/silentflow/pinterest-scraper)
- **Udemy** - [Udemy Scraper](https://apify.com/silentflow/udemy-scraper)
- **Alibaba** - [Alibaba Scraper | Products, Supplier Companies and Prices](https://apify.com/silentflow/alibaba-scraper)
- **AliExpress** - [AliExpress Reviews Scraper | Feedback, Ratings and Photos](https://apify.com/silentflow/aliexpress-reviews-scraper)
- **AliExpress** - [AliExpress Scraper | Products, Prices and Sales](https://apify.com/silentflow/aliexpress-scraper)
- **Avito** - [Avito Profiles Scraper | Sellers, Ratings and Reviews](https://apify.com/silentflow/avito-profiles-scraper)
- **Back Market** - [Back Market Scraper | Refurbished Electronics Prices](https://apify.com/silentflow/backmarket-scraper)
- **BAUHAUS** - [BAUHAUS Scraper | Product Prices, EAN and Specs](https://apify.com/silentflow/bauhaus-scraper)
- **CARFAX** - [CARFAX Scraper | Used Cars, Prices and History](https://apify.com/silentflow/carfax-scraper)
- **Coupang** - [Coupang Detail Scraper | Product Prices and Options](https://apify.com/silentflow/coupang-detail-scraper)
- **eBay Marketplace** - [eBay Marketplace Scraper](https://apify.com/silentflow/ebay-scraper)
- **Europages** - [Europages Scraper | Suppliers and B2B Companies](https://apify.com/silentflow/europages-scraper-ppr)
- **Eventim** - [Eventim Scraper | Events, Ticket Prices and Venues](https://apify.com/silentflow/eventim-scraper)
- **Google Hotels** - [Google Hotels Scraper | Prices, Offers and Ratings](https://apify.com/silentflow/google-hotels-scraper)
- **Homedepot** - [Homedepot Reviews Scraper | Customer Reviews and Ratings](https://apify.com/silentflow/homedepot-reviews-scraper)
- **Leboncoin** - [Leboncoin Details Scraper | Full Ad Data and Sellers](https://apify.com/silentflow/leboncoin-details-scraper)
- **Mafengwo** - [Mafengwo Scraper | Attractions, Ratings and Tickets](https://apify.com/silentflow/mafengwo-scraper)
- **Mercari** - [Mercari Scraper | Listings, Sold Prices and Sellers](https://apify.com/silentflow/mercari-scraper)
- **Vinted Marketplace** - [Vinted Marketplace Scraper](https://apify.com/silentflow/vinted-scraper-ppr)
- **Webmotors** - [Webmotors Scraper | Car Listings, Prices and FIPE](https://apify.com/silentflow/webmotors-scraper)
- **Amazon** - [Amazon Product Scraper](https://apify.com/silentflow/amazon-scraper)
- **Amazon Marketplace** - [Amazon Marketplace Scraper](https://apify.com/silentflow/amazon-scraper-ppe)
- **AutoScout24** - [AutoScout24 Scraper](https://apify.com/silentflow/autoscout24-scraper)
- **eBay Listings** - [eBay Listings Scraper](https://apify.com/silentflow/ebay-scraper-ppe)
- **Europages Deep Dive Extractor** - [Europages Deep Dive Extractor | VAT, Decision Makers, ISO Certs](https://apify.com/silentflow/europages-deep-dive-extractor)
- **GasBuddy** - [GasBuddy Scraper | Gas Prices by Station](https://apify.com/silentflow/gasbuddy-scraper)
- **Goofish** - [Goofish Detail Scraper | Listings, Prices and Sellers](https://apify.com/silentflow/goofish-detail-scraper)
- **Trip** - [Trip Scraper | Hotels, Prices and Reviews](https://apify.com/silentflow/trip-scraper)
- **Vinted** - [Vinted Scraper](https://apify.com/silentflow/vinted-scraper)
- **Walmart** - [Walmart Scraper | Prices, Reviews, Sellers, Availability](https://apify.com/silentflow/walmart-scraper)
- **Walmart** - [Walmart Product Scraper](https://apify.com/silentflow/walmart-scraper-ppe)

**💼 Jobs**

- **ZipRecruiter** - [ZipRecruiter Jobs Scraper | Salary, Company & Location Filters](https://apify.com/silentflow/ziprecruiter-scraper-ppe)
- **Indeed** - [Indeed Company Reviews Scraper](https://apify.com/silentflow/indeed-companies-scraper-ppr)
- **Multi Board** - [Multi Board Job Scraper](https://apify.com/silentflow/all-jobs-scraper-ppe)
- **Glassdoor Job Listings** - [Glassdoor Job Listings Scraper](https://apify.com/silentflow/glassdoor-jobs-scraper-ppr)
- **Malt** - [Malt Scraper | Freelance Profiles](https://apify.com/silentflow/malt-scraper-ppr)
- **🔥 Glassdoor** - [🔥 Glassdoor Scraper](https://apify.com/silentflow/glassdoor-scraper-ppe)
- **Jobright** - [Jobright Scraper | Jobs, Salaries and H1B Sponsors](https://apify.com/silentflow/jobright-scraper)
- **Jora** - [Jora Jobs Scraper](https://apify.com/silentflow/jora-scraper-ppe)
- **LinkedIn Job Search** - [LinkedIn Job Search Scraper | Salaries & Seniority](https://apify.com/silentflow/linkedin-jobs-scraper-ppr)
- **Malt Freelancer** - [Malt Freelancer Scraper](https://apify.com/silentflow/malt-scraper)
- **ATS** - [ATS Jobs Scraper | Greenhouse, Lever and Ashby](https://apify.com/silentflow/ats-jobs-scraper)
- **Glassdoor** - [Glassdoor Jobs Scraper](https://apify.com/silentflow/glassdoor-jobs-scraper)
- **Arbeitsagentur** - [Arbeitsagentur Jobs Scraper](https://apify.com/silentflow/arbeitsagentur-scraper-ppe)
- **Cutshort** - [Cutshort Jobs Scraper | Salaries, Skills and Companies](https://apify.com/silentflow/cutshort-jobs-scraper)
- **Dice** - [Dice Jobs Scraper | US Tech Jobs, Salaries, Skills](https://apify.com/silentflow/dice-jobs-scraper)
- **Dice Tech** - [Dice Tech Jobs Scraper](https://apify.com/silentflow/dice-jobs-scraper-ppe)
- **iimjobs** - [iimjobs Jobs Scraper | MBA, Finance and Hirist Tech Jobs](https://apify.com/silentflow/iimjobs-jobs-scraper)
- **Indeed** - [Indeed Jobs Scraper | Job Listings in 73 Countries](https://apify.com/silentflow/indeed-jobs-scraper-ppr)
- **Instahyre** - [Instahyre Jobs Scraper | Companies, Recruiters and Ratings](https://apify.com/silentflow/instahyre-jobs-scraper)
- **Jora** - [Jora Scraper | Jobs in Australia, New Zealand, Singapore](https://apify.com/silentflow/jora-scraper)
- **StepStone** - [StepStone Scraper](https://apify.com/silentflow/stepstone-scraper)
- **Welcome to the Jungle** - [Welcome to the Jungle Job Scraper](https://apify.com/silentflow/welcome-to-the-jungle-scraper-ppe)
- **YCombinator** - [YCombinator Jobs Scraper | Startup Jobs, Salaries and Founders](https://apify.com/silentflow/ycombinator-jobs-scraper)
- **All** - [All Jobs Scraper](https://apify.com/silentflow/all-jobs-scraper)
- **Arbeitsagentur** - [Arbeitsagentur Scraper | German and Austrian Job Board](https://apify.com/silentflow/arbeitsagentur-scraper)
- **iimjobs** - [iimjobs Scraper | Jobs, Companies and Recruiters](https://apify.com/silentflow/iimjobs-scraper)
- **Indeed** - [Indeed Companies Scraper | Reviews, Salaries, Interviews](https://apify.com/silentflow/indeed-companies-scraper)
- **Indeed** - [Indeed Jobs Scraper | NLP Skills](https://apify.com/silentflow/indeed-jobs-scraper)
- **LinkedIn** - [LinkedIn Jobs Scraper](https://apify.com/silentflow/linkedin-jobs-scraper)
- **Naukri & NaukriGulf** - [Naukri & NaukriGulf Jobs Scraper](https://apify.com/silentflow/naukri-scraper)
- **Seek** - [Seek Job Scraper](https://apify.com/silentflow/seek-job-scraper)
- **Welcome to the Jungle** - [Welcome to the Jungle Scraper | Jobs and Company Data](https://apify.com/silentflow/welcome-to-the-jungle-scraper)
- **Ziprecruiter** - [Ziprecruiter Scraper](https://apify.com/silentflow/ziprecruiter-scraper)

**🏠 Real estate**

- **SeLoger** - [SeLoger Scraper | Real Estate Listings](https://apify.com/silentflow/seloger-scraper-ppr)
- **Realtor Rental Listings** - [Realtor Rental Listings Scraper](https://apify.com/silentflow/realtor-rental-scraper-ppe)
- **Airbnb Pro Host Contact &** - [Airbnb Pro Host Contact & Email Scraper](https://apify.com/silentflow/airbnb-professional-host-scraper-ppe)
- **Airbnb Professional Host** - [Airbnb Professional Host Scraper | Emails, Phones, SIRET](https://apify.com/silentflow/airbnb-professional-host-scraper)
- **Trulia Rental Listings** - [Trulia Rental Listings Scraper](https://apify.com/silentflow/trulia-rental-scraper-ppe)
- **Bien'ici** - [Bien'ici Scraper | Property Listings](https://apify.com/silentflow/bienici-scraper-ppr)
- **Rightmove** - [Rightmove Scraper](https://apify.com/silentflow/rightmove-scraper)
- **Bienici** - [Bienici Scraper](https://apify.com/silentflow/bienici-scraper)
- **SeLoger** - [SeLoger Scraper | French Property Listings and Agencies](https://apify.com/silentflow/seloger-scraper)
- **Airbnb Search** - [Airbnb Search Scraper](https://apify.com/silentflow/airbnb-search-scraper-ppe)
- **Idealista** - [Idealista Scraper](https://apify.com/silentflow/idealista-scraper-ppr)
- **Realestate.com.au** - [Realestate.com.au Scraper](https://apify.com/silentflow/realestate-com-au-scraper)
- **Airbnb Search** - [Airbnb Search Scraper | Prices, Fees, Amenities, Hosts](https://apify.com/silentflow/airbnb-search-scraper)
- **Anjuke** - [Anjuke Scraper | Rental Listings, Prices and Agents](https://apify.com/silentflow/anjuke-scraper)
- **Idealista** - [Idealista Scraper](https://apify.com/silentflow/idealista-scraper)
- **Realtor Rental** - [Realtor Rental Scraper](https://apify.com/silentflow/realtor-rental-scraper)
- **Trulia Rental** - [Trulia Rental Scraper | US Rentals, Prices, Pet Policy](https://apify.com/silentflow/trulia-rental-scraper)
- **Zillow** - [Zillow Scraper](https://apify.com/silentflow/zillow-scraper)

**📣 Social media**

- **LinkedIn Post Search** - [LinkedIn Post Search Scraper | Keywords, Hashtags & Profiles](https://apify.com/silentflow/linkedin-posts-scraper-ppr)
- **Facebook Search** - [Facebook Search Scraper](https://apify.com/silentflow/facebook-search-scraper)
- **Instagram** - [Instagram Story Scraper | Stories & Highlights](https://apify.com/silentflow/instagram-story-scraper)
- **LinkedIn Leads** - [LinkedIn Leads Scraper | Sales Navigator Export](https://apify.com/silentflow/linkedin-sales-navigator-scraper-ppr)
- **Facebook Search** - [Facebook Search Profiles Scraper | People by Name or Keyword](https://apify.com/silentflow/facebook-search-profiles-scraper)
- **YouTube** - [YouTube Channel Scraper | Videos, Shorts and Views](https://apify.com/silentflow/youtube-channel-scraper)
- **TikTok** - [TikTok Scraper](https://apify.com/silentflow/tiktok-scraper)
- **Instagram Engagement** - [Instagram Engagement Scraper](https://apify.com/silentflow/instagram-engagement-scraper)
- **OnlyFans** - [OnlyFans Profile Scraper](https://apify.com/silentflow/onlyfans-scraper-ppe)
- **TikTok Trend** - [TikTok Trend Scraper | Trending Hashtags and Videos](https://apify.com/silentflow/tiktok-trend-scraper)
- **Discord** - [Discord Scraper | Servers, Member Counts and Invites](https://apify.com/silentflow/discord-scraper)
- **Meta Ad Library** - [Meta Ad Library Scraper](https://apify.com/silentflow/meta-ad-library-scraper)
- **OnlyFans** - [OnlyFans Creator Scraper](https://apify.com/silentflow/onlyfans-scraper)
- **Skool Community** - [Skool Community Scraper](https://apify.com/silentflow/skool-scraper-ppe)
- **TikTok Creative** - [TikTok Creative Ads Scraper | Top Ads, Landing Pages & Metrics](https://apify.com/silentflow/tiktok-creative-ads-scraper)
- **Douyin** - [Douyin Comments Scraper | Comments, Likes and IP Regions](https://apify.com/silentflow/douyin-comments-scraper)
- **Facebook Thread** - [Facebook Thread Profiles Scraper | Followers, Bios & Engagement](https://apify.com/silentflow/facebook-thread-profiles-scraper)
- **Kuaishou** - [Kuaishou Scraper | Videos, Comments and Creator Stats](https://apify.com/silentflow/kuaishou-scraper)
- **Likee** - [Likee Scraper | Videos, Hashtags and Creators](https://apify.com/silentflow/likee-scraper)
- **LinkedIn Ads Library - No Cookies** - [LinkedIn Ads Library Scraper - No Cookies](https://apify.com/silentflow/linkedin-ads-scraper)
- **LinkedIn Event** - [LinkedIn Event Scraper](https://apify.com/silentflow/linkedin-events-scraper)
- **LinkedIn Hashtag &** - [LinkedIn Hashtag & Post Scraper | No Cookies](https://apify.com/silentflow/linkedin-posts-scraper)
- **Pinterest** - [Pinterest Ads Scraper | Ad Library, Reach & Targeting](https://apify.com/silentflow/pinterest-ads-scraper)
- **Pinterest** - [Pinterest Profiles Scraper | Followers, Emails and Bios](https://apify.com/silentflow/pinterest-profiles-scraper)
- **Pinterest** - [Pinterest Videos Scraper | Video Downloader, MP4 Links, Stats](https://apify.com/silentflow/pinterest-videos-scraper)
- **Reddit** - [Reddit Comments Scraper | Search, Threads and Replies](https://apify.com/silentflow/reddit-comments-scraper)
- **Reddit** - [Reddit Profiles Scraper | User Karma, Activity and Communities](https://apify.com/silentflow/reddit-profiles-scraper)
- **Reddit** - [Reddit Scraper | Posts, Comments and Subreddits](https://apify.com/silentflow/reddit-scraper)
- **Reddit** - [Reddit Scraper | Comments, Posts and Users](https://apify.com/silentflow/reddit-scraper-ppr)
- **RedNote** - [RedNote Detail Scraper | Xiaohongshu Details, Images, Videos](https://apify.com/silentflow/rednote-detail-scraper)
- **RedNote** - [RedNote Videos Scraper | Downloader, Transcripts and Stats](https://apify.com/silentflow/rednote-videos-scraper)
- **Snapchat** - [Snapchat Contacts Scraper | Phones, Emails and Websites](https://apify.com/silentflow/snapchat-contacts-scraper)
- **Snapchat** - [Snapchat Videos Scraper | Spotlight Videos, MP4 and Stats](https://apify.com/silentflow/snapchat-videos-scraper)
- **TikTok Lookalike** - [TikTok Lookalike Scraper | Influencers, Emails and Engagement](https://apify.com/silentflow/tiktok-lookalike-scraper)
- **Weibo** - [Weibo Scraper | Posts, Profiles and Engagement](https://apify.com/silentflow/weibo-scraper)
- **Xigua** - [Xigua Scraper | Videos, Creators and Downloads](https://apify.com/silentflow/xigua-scraper)
- **YouTube Autocomplete** - [YouTube Autocomplete Scraper | Keyword Suggestions](https://apify.com/silentflow/youtube-autocomplete-scraper)
- **Facebook** - [Facebook Company Scraper | Emails, Phones, Ratings](https://apify.com/silentflow/facebook-company-scraper)
- **Facebook Business Page** - [Facebook Business Page Scraper](https://apify.com/silentflow/facebook-company-scraper-ppe)
- **Kwai** - [Kwai Scraper | Videos, Creators and Hashtags](https://apify.com/silentflow/kwai-scraper)
- **Skool Group** - [Skool Group Scraper](https://apify.com/silentflow/skool-scraper)
- **Snapchat** - [Snapchat Ads Scraper | Ad Library, Impressions & Targeting](https://apify.com/silentflow/snapchat-ads-scraper)
- **TwitchTracker** - [TwitchTracker Scraper | Twitch Streamer Stats and Rankings](https://apify.com/silentflow/twitchtracker-scraper)
- **YouTube** - [YouTube Transcript Scraper](https://apify.com/silentflow/youtube-transcript-scraper)

**🏢 Business data**

- **Tencent** - [Tencent Scraper | Maps Places, Phones and Ratings](https://apify.com/silentflow/tencent-scraper)
- **LinkedIn Company Search** - [LinkedIn Company Search Scraper | Profiles & Firmographics](https://apify.com/silentflow/linkedin-profiles-companies-scraper)
- **LinkedIn People Search** - [LinkedIn People Search Scraper | Profiles & Companies](https://apify.com/silentflow/linkedin-profiles-companies-scraper-ppr)
- **ForexFactory** - [ForexFactory Scraper | Economic Calendar and Forecasts](https://apify.com/silentflow/forexfactory-scraper)
- **Bilibili** - [Bilibili Scraper | Videos, Profiles, Comments, Danmaku](https://apify.com/silentflow/bilibili-scraper)
- **Ctrip** - [Ctrip Scraper | Attractions, Tickets and Reviews](https://apify.com/silentflow/ctrip-scraper)
- **LinkedIn Sales Navigator** - [LinkedIn Sales Navigator Scraper](https://apify.com/silentflow/linkedin-sales-navigator-scraper)
- **OpenTable** - [OpenTable Reviews Scraper | Restaurant Reviews and Ratings](https://apify.com/silentflow/opentable-reviews-scraper)
- **SoftwareAdvice** - [SoftwareAdvice Scraper | Reviews, Ratings and Pros & Cons](https://apify.com/silentflow/softwareadvice-scraper)
- **Teachable Course** - [Teachable Course Scraper](https://apify.com/silentflow/teachable-scraper)
- **Website Tech Stack** - [Website Tech Stack Scraper](https://apify.com/silentflow/website-tech-stack-scraper)
- **Zomato** - [Zomato Reviews Scraper | Restaurant Ratings and Replies](https://apify.com/silentflow/zomato-reviews-scraper)
- **2GIS** - [2GIS Reviews Scraper | Ratings, Photos and Owner Replies](https://apify.com/silentflow/2gis-reviews-scraper)
- **Teachable - Courses, Prices & Instructors** - [Teachable Scraper - Courses, Prices & Instructors](https://apify.com/silentflow/teachable-scraper-ppr)
- **Trustpilot** - [Trustpilot Scraper | Reviews, Ratings and Company Contacts](https://apify.com/silentflow/trustpilot-enricher)

**✈️ Travel**

- **Google Maps** - [Google Maps Scraper](https://apify.com/silentflow/google-maps-scraper)
- **Flight Price** - [Flight Price Scraper](https://apify.com/silentflow/flight-price-scraper)
- **Booking.com Hotel** - [Booking.com Hotel Scraper](https://apify.com/silentflow/booking-scraper-ppr)
- **Kakao** - [Kakao Scraper | Map Places, Reviews and Phones](https://apify.com/silentflow/kakao-scraper)
- **TheFork** - [TheFork Scraper | Restaurants, Menus and Ratings](https://apify.com/silentflow/thefork-scraper)
- **Trip** - [Trip Reviews Scraper | Hotel Reviews and Ratings](https://apify.com/silentflow/trip-reviews-scraper)
- **Booking** - [Booking Scraper | Hotel Prices, Photos, Availability](https://apify.com/silentflow/booking-scraper)

**🎯 Lead generation**

- **Northdata** - [Northdata Company Scraper](https://apify.com/silentflow/northdata-scraper)
- **ZocDoc** - [ZocDoc Scraper | Doctors, Reviews and Availability](https://apify.com/silentflow/zocdoc-scraper-ppr)
- **Dealroom** - [Dealroom Scraper | Companies and Investors](https://apify.com/silentflow/dealroom-scraper-ppe)
- **UK Companies House** - [UK Companies House Enricher](https://apify.com/silentflow/uk-companies-house-enricher)
- **CNPJ Brazilian** - [CNPJ Brazilian Company Enricher](https://apify.com/silentflow/cnpj-enricher)
- **Google Ads Transparency** - [Google Ads Transparency Scraper](https://apify.com/silentflow/google-ads-transparency-scraper)
- **BuiltWith** - [BuiltWith Scraper | Tech Stacks and Top Sites](https://apify.com/silentflow/builtwith-scraper)
- **Company Data** - [Company Data Scraper | Emails, Phones and Tech Stack](https://apify.com/silentflow/company-data-scraper)
- **Dealroom Startup Data** - [Dealroom Startup Data Scraper](https://apify.com/silentflow/dealroom-scraper)
- **Domain** - [Domain Enricher](https://apify.com/silentflow/domain-enricher)
- **French Company Prospector** - [French Company Prospector](https://apify.com/silentflow/french-company-prospector)
- **Justdial** - [Justdial Companies Scraper | Business Leads, Phones and Emails](https://apify.com/silentflow/justdial-companies-scraper)
- **PagesJaunes** - [PagesJaunes Scraper | French Business Emails and SIRET](https://apify.com/silentflow/pagesjaunes-scraper)
- **SEC** - [SEC Scraper | EDGAR Filings and Company Data](https://apify.com/silentflow/sec-scraper)
- **SIRET** - [SIRET Company Enricher](https://apify.com/silentflow/siret-enricher-ppr)
- **USPTO** - [USPTO Scraper | Trademark Search and Status](https://apify.com/silentflow/uspto-scraper)
- **Clutch** - [Clutch Scraper | Agencies, Reviews, Ratings, Services](https://apify.com/silentflow/clutch-scraper)
- **Clutch Agency** - [Clutch Agency Scraper](https://apify.com/silentflow/clutch-scraper-ppe)
- **G2** - [G2 Reviews Scraper](https://apify.com/silentflow/g2-review-intelligence)
- **PagesJaunes** - [PagesJaunes Business Scraper](https://apify.com/silentflow/pagesjaunes-scraper-ppr)
- **SIRET French** - [SIRET French Company Enricher](https://apify.com/silentflow/siret-enricher)
- **ThomasNet Suppliers** - [ThomasNet Suppliers Scraper](https://apify.com/silentflow/thomasnet-scraper)
- **ZocDoc** - [ZocDoc Scraper](https://apify.com/silentflow/zocdoc-scraper)

**🔎 SEO**

- **Similarweb** - [Similarweb Scraper | Website Traffic, Rankings and Competitors](https://apify.com/silentflow/similarweb-scraper)
- **Apple** - [Apple Reviews Scraper | App Store Reviews and Ratings](https://apify.com/silentflow/apple-reviews-scraper)
- **Apple** - [Apple Scraper | App Store Apps, Ratings and Charts](https://apify.com/silentflow/apple-scraper)
- **Bing** - [Bing Enricher Scraper | Mobile Friendly Test and Indexing](https://apify.com/silentflow/bing-enricher-scraper)
- **Google News** - [Google News Scraper](https://apify.com/silentflow/google-news-scraper)

**📈 Marketing**

- **Pexels** - [Pexels Scraper | Photos, Videos and Download Stats](https://apify.com/silentflow/pexels-scraper)
- **Douyin** - [Douyin Transcript Scraper | Subtitles and Speech to Text](https://apify.com/silentflow/douyin-transcript-scraper)

**🧰 More tools**

- **FanDuel** - [FanDuel Scraper | Odds, Spreads and Player Props](https://apify.com/silentflow/fanduel-scraper)
- **PrizePicks** - [PrizePicks Scraper | Player Props, Lines and Projections](https://apify.com/silentflow/prizepicks-scraper)

### Support

Need something this scraper doesn't do yet? We ship features fast.

- Feature requests go straight to our backlog
- Enterprise needs? We do custom integrations and high-volume plans
- Pricing questions? Check the Monetization tab on the actor page

Response time: usually under 24 hours.

### Legal compliance

This Actor extracts publicly available competitor research data from SpyFu: domain-level estimates of search traffic, keywords, ad budgets and competitors. It does not bypass any login, paywall or CAPTCHA, and never uses a SpyFu account. The rows describe websites and companies, not people. Users are responsible for complying with SpyFu's terms of service and applicable data protection laws (GDPR, CCPA, and PIPL where relevant). SpyFu is a trademark of its owner; this Actor is not affiliated with or endorsed by SpyFu. The data returned is informational and made of estimates; verify accuracy before using it for regulated or financial decisions.

*SpyFu Scraper by SilentFlow: the traffic, ad budget, competitors and keywords of any domain, ready for your spreadsheet.*

# Actor input Schema

## `domains` (type: `array`):

Websites to analyze, one per line: <code>nike.com</code>, <code>hubspot.com</code>. A full address works too (<code>https://www.nike.com/shoes</code> reads <code>nike.com</code>). Each domain becomes one row with its organic keywords, organic clicks and their value, ad budget, paid keywords, competitors and history. A domain SpyFu does not track gives no row.

## `keywords` (type: `array`):

Find who competes on a search term: <code>running shoes</code>, <code>crm software</code>. Each keyword brings up the domain ranked first on Google and every domain SpyFu saw bidding on it in Google Ads, the steadiest bidders first, and each one becomes a full domain row: <code>crm software</code> brings up salesforce.com, zoho.com, monday.com, hubspot.com and pipedrive.com first. Use <b>Max domains</b> to keep the list short.

## `startUrls` (type: `array`):

Paste links copied from a browser:<ul><li>a SpyFu domain page: <code>https://www.spyfu.com/overview/domain?query=nike.com</code> (SEO, PPC and competitor pages work too)</li><li>a SpyFu keyword page: <code>https://www.spyfu.com/keyword/overview?query=running+shoes</code></li><li>any web page, for its domain: <code>https://www.hubspot.com/pricing</code></li></ul>

## `country` (type: `string`):

Google results of which country: keywords, clicks, ad budgets, competitors and keyword lists are those of that country. Pick one of SpyFu's 32 countries, or type its code (<code>uk</code>, <code>gbr</code>) or its English name. A domain SpyFu does not track in that country gives no row.

## `maxItems` (type: `integer`):

Stop after this many domains, across domains, keywords and links. A domain takes about a second. Domains you type are read first, then the domains of your keywords.

## `historyMonths` (type: `integer`):

How many months of SpyFu history each row carries in <code>monthlyHistory</code>, latest month first: organic keywords, clicks and value, paid keywords, clicks and ad budget, average positions and domain strength. <code>12</code> is a year, <code>300</code> keeps everything SpyFu has (back to 2006 for the oldest domains), <code>0</code> leaves it out.

## Actor input object example

```json
{
  "domains": [
    "nike.com",
    "hubspot.com",
    "shopify.com"
  ],
  "keywords": [
    "running shoes"
  ],
  "country": "us",
  "maxItems": 20,
  "historyMonths": 12
}
```

# Actor output Schema

## `domains` (type: `string`):

Every domain: id, domain, SpyFu page, website, country, organic keywords, clicks, value and rank, paid keywords, clicks, ad budget and position, month-over-month and year-over-year changes, newly ranked, gained and lost keywords, domain strength, traffic split, competitors, top and new organic and paid keywords, keywords by country, monthly history, scrapedAt.

## `seo` (type: `string`):

Organic keywords, clicks and their value, average rank, changes and the top organic keyword.

## `ppc` (type: `string`):

Paid keywords, paid clicks, ad budget, average ad position, changes, top paid keyword and competitor.

## `competitors` (type: `string`):

The top SEO and PPC competitors of each domain, with the keywords they share.

## `keywords` (type: `string`):

Top and new organic and paid keywords, with search volume, cost per click, position and clicks.

## `trend` (type: `string`):

Monthly history, tracking start, main country and keywords per country.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "domains": [
        "nike.com",
        "hubspot.com",
        "shopify.com"
    ],
    "keywords": [
        "running shoes"
    ],
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/spyfu-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "domains": [
        "nike.com",
        "hubspot.com",
        "shopify.com",
    ],
    "keywords": ["running shoes"],
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("silentflow/spyfu-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "domains": [
    "nike.com",
    "hubspot.com",
    "shopify.com"
  ],
  "keywords": [
    "running shoes"
  ],
  "maxItems": 20
}' |
apify call silentflow/spyfu-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,silentflow/spyfu-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Enpvic0LzohphrXqU/builds/xeJ2GMGBG3qPpUHiu/openapi.json
