Similarweb Scraper API — Website Traffic & Competitor Analysis avatar

Similarweb Scraper API — Website Traffic & Competitor Analysis

Pricing

from $1.50 / 1,000 base data

Go to Apify Store
Similarweb Scraper API — Website Traffic & Competitor Analysis

Similarweb Scraper API — Website Traffic & Competitor Analysis

Website traffic checker and analytics for any domain, powered by Similarweb data: monthly visits, global & country rank, traffic sources, keywords, AI traffic from ChatGPT, Gemini & Claude, audience age & gender, referrers, tech stack and competitor analysis. Bulk domains, no login.

Pricing

from $1.50 / 1,000 base data

Rating

0.0

(0)

Developer

Kelopr_bk

Kelopr_bk

Maintained by Community

Actor stats

0

Bookmarked

284

Total users

124

Monthly active users

a day ago

Last modified

Share

Similarweb Scraper

Similarweb Scraper — website traffic checker, competitor analysis & AI visibility

A website traffic checker and website analytics tool for whole lists of domains. Collect monthly visits, growth, ranks, acquisition channels, keywords, AI referrals, WHOIS, company contacts and homepage technologies. Run competitor analysis side by side, track changes between runs or build a competitive market map.

🤖 AI visibility per assistant: every tracked site gets its own ChatGPT, Gemini, Perplexity, Claude, Copilot, DeepSeek and Grok share columns, so you can sort a list by who sends AI traffic.

No Similarweb login or browser session is required. Existing API integrations using base_data, similar_sites, aitdk, or all remain compatible.

▶️ Your first run

  1. Open Input. The first question is What do you want to know? — leave it on 📊 Traffic & audience, which covers traffic sources, engagement, ranks, top countries, search keywords and AI referrals.
  2. Under Websites, add the sites you want to analyze, one per entry. A domain such as apify.com or a full HTTP(S) website URL is accepted. Duplicate websites are removed automatically.
  3. Ignore the rest — the two sections below the websites only matter for Track changes and Map a market, and Advanced has sensible defaults. Click Start. For a first run, use 1–3 websites.
  4. Open Output → Results → Overview for the headline metrics — traffic, growth, rank, category, top country, top channel and AI-referral share. Switch to Traffic, Channels, Countries or Keywords for details.
  5. Use Export to download the data. Choose All fields when you want the full record. JSON preserves nested objects; list cells in the table expand to show their entries.

Copy this into Input → JSON for a first run:

{
"domains": ["python.org", "docker.com"],
"mode": "base_data"
}

Choose ⭐ Everything we can get to add competitor discovery, WHOIS and domain age, homepage tech stack and company contacts. Each website produces one main result. The countries, keywords and other lists inside that record are included in its collection event.

📋 Ready-made tasks

Prefer to start from a working setup? Each task below is a saved input you can run as is, then swap in your own websites.

TaskWorkflowWebsites
Compare ecommerce website traffic⚔️ Compareamazon.com, ebay.com, walmart.com, etsy.com, temu.com
Compare travel booking traffic⚔️ Comparebooking.com, airbnb.com, expedia.com, tripadvisor.com, agoda.com
Compare job board traffic⚔️ Compareindeed.com, glassdoor.com, linkedin.com, ziprecruiter.com, monster.com
Research SaaS website traffic📊 Traffic & audiencenotion.so, asana.com, monday.com, clickup.com, trello.com
Research developer website audiences📊 Traffic & audiencegithub.com, stackoverflow.com, gitlab.com, dev.to
Analyze AI referrals to tech sites📊 Traffic & audienceopenai.com, anthropic.com, huggingface.co, perplexity.ai
Discover Shopify competitors🧭 Find competitorsshopify.com, woocommerce.com
Map design software competitors🕸️ Map a marketcanva.com, figma.com
Track SaaS traffic changes🔔 Track changesnotion.so, clickup.com, asana.com
Research ecommerce domain data⭐ Everything we can getshopify.com, bigcommerce.com, wix.com

🚀 Pick your goal

Workflow (as it appears in the input)Best forWhat you receiveCollection event
📊 Traffic & audience (base_data)Fast website overviewTraffic history, growth, ranks, engagement, channels, geography, keywords, AI visibility, screenshotbase-data
🧭 Find competitors (similar_sites)Competitor discoverySimilar websites, similarity grades, estimated visits, categories, tags, related appssimilar-sites
🔍 SEO keywords & tech stack (aitdk)Domain due diligenceWHOIS/RDAP, domain age, expiry, homepage keyword density, company metadata, social links, detected technologieswhois-keywords
⭐ Everything we can get (all)One row with everythingTraffic, competitor discovery, WHOIS and domain age, homepage tech stack and company contacts, merged into a single rowall-in-one
⚔️ Compare websites (compare)Side-by-side benchmarkActual traffic shares, leaders, ranks, engagement position, and gaps versus the first domainbase-data
🔔 Track changes over time (monitor)Recurring intelligenceSaved baseline and material changes in traffic, ranks, engagement, acquisition shares, keywords and available AI referralsbase-data or all-in-one
🕸️ Map a market (market_map)Competitive landscapeSeed sites, auto-discovered competitors, enriched traffic rows, market shares, and a separate relationship datasetbase-data

Current rates are listed in the Actor's Pricing tab. Successful and partial records use the workflow's collection event. Failed lookups go to Errors without a result-event charge; the platform's Actor start event still applies. Monitoring checks are charged even when onlyChanges filters their rows from the output.

🏢 Company & contact details — included in “Everything we can get”

⭐ Everything we can get (all) and 🔍 SEO keywords & tech stack (aitdk) read the website's own public homepage and return the business details found there, inside the same result event, at no extra charge:

FieldWhat it holds
companyNameOrganization name from structured homepage data
companyFoundingDateFounding year, when the homepage declares it
companyAddressPostal address — street, locality, region, postal code, country
contactEmailsContact emails from mailto: links and structured data, deduplicated
contactPhonesPhone numbers from tel: links and structured data, deduplicated
socialLinksOfficial LinkedIn, X/Twitter, Facebook, Instagram, YouTube, TikTok and GitHub profiles
technologies, technologyCountTechnology signatures detected on the homepage
whois, domainAgeDays, daysUntilDomainExpirationRegistrar, dates, nameservers and derived domain age

These come only from what the homepage publishes, so a bare landing page returns fewer of them. Open Results → Contacts for the contact and firmographic view, and Results → Website for the full domain record.

{
"domains": ["shopify.com", "stripe.com"],
"mode": "all"
}

Extra audience layer (optional)

includeInDepth: true additionally reads Similarweb's own public website page for audience age and gender, referring domains, ad publishers and rank history. It is off by default because that page sits behind extra protection and adds time to the run. When it cannot be read, the Actor stops asking after the first attempts instead of slowing the run, and every website still comes back with all of the traffic, competitor, domain and contact data above. indepthStatus reports whether the layer was collected.

{
"domains": ["python.org", "docker.com"],
"mode": "all",
"includeInDepth": true
}
You want to…UseLook at
Size up a prospect or partner before a call📊 Traffic & audiencelatestMonthlyVisits, trafficTrend, topCountryCode, topTrafficChannel
Qualify a lead list by website size📊 Traffic & audience + filterstrafficDataAvailable, minMonthlyVisits, maxGlobalRank
Build a competitor list for a niche🧭 Find competitors or 🕸️ Map a marketsimilarSites, marketTrafficSharePercent, emergingCompetitor
Benchmark your site against rivals⚔️ Compare websitestrafficSharePercent, trafficGapVsPrimaryPercent, winnerMetrics
See how much traffic AI assistants send📊 Traffic & audienceaiTrafficPercent, aiChatgptSharePercent, topAiPlatform
Plan SEO and paid search📊 Traffic & audienceorganicSearchPercent, paidSearchPercent, topKeywords
Check a domain before buying or partnering🔍 SEO keywords & tech stackdomainAgeDays, daysUntilDomainExpiration, whois, technologies
Get alerts when a competitor moves🔔 Track changes + a schedulechangeStatus, changeSeverity, changedMetrics
Enrich a CRM with company signals⭐ Everything we can getcompanyName, socialLinks in websiteIntelligence, category

✨ What makes the output comfortable

  • Flat columns where they matter: latestMonthlyVisits, trafficChangePercent, bounceRatePercent, organicSearchPercent, and dozens more export cleanly to CSV and Excel.
  • Original objects remain: existing consumers can still use engagement, estimatedMonthlyVisits, trafficSources, countryRank, and other legacy fields.
  • Four output destinations: Results, Market links, Errors and Run summary. Topic tabs inside Results show the data for your chosen workflow.
  • Results appear as they finish: independent website profiles are saved immediately. Compare and Market Map calculate their cohort-wide shares after collecting the bounded comparison group.
  • Clean failures: no error rows mixed into paid result counts or downstream exports.
  • Clear finish state: every run writes an OUTPUT JSON summary with exact result, error, filter, duration, and charged-event counts.
  • Honest enrichment: unavailable values stay empty. The Actor does not invent demographics, traffic, technologies, or company data.

📏 How much data each website returns

ListDepthWorkflow
Monthly visits (trafficHistory, estimatedMonthlyVisits)Last 3 months the source publishesTraffic & audience, Everything
Top countries (topCountryShares)Top 5Traffic & audience, Everything
Search keywords (topKeywords)Top 5, with volume and CPCTraffic & audience, Everything
Traffic channelsAll 10 channelsTraffic & audience, Everything
AI assistants (aiChatbotDistribution)Every assistant the source reportsTraffic & audience, Everything
Similar websites (similarSites)Up to 20Find competitors, Everything, Map a market
Homepage keyword densityTop 20 wordsSEO keywords & tech stack, Everything
Company contactsEmails, phones, address, social profilesSEO keywords & tech stack, Everything

Similarweb publishes monthly figures. The latest month usually appears in the first half of the following month; snapshotDate tells you which month a row describes.

📊 Traffic & audience fields

The base_data workflow returns the source-compatible objects plus useful derived fields.

Identity and rank

domain, websiteUrl, similarwebUrl, siteName, title, description, category, snapshotDate, screenshot, globalRank, countryRank, countryCode, countryRankValue, categoryRank, categoryRankValue, marketPosition

Traffic and engagement

engagement, estimatedMonthlyVisits, trafficHistory, latestMonthlyVisits, previousMonthlyVisits, trafficChangeMoM, trafficChangePercent, threeMonthGrowthPercent, trafficTrend, bounceRatePercent, pagesPerVisit, timeOnSiteSeconds

MetricMeaning and units
latestMonthlyVisitsEstimated visits in the latest available month, not unique visitors
engagement.month, engagement.yearPeriod of the engagement metrics
bounceRatePercentBounce rate on a 0–100 scale; engagement.bounceRate preserves the original 0–1 fraction
pagesPerVisitAverage pages per visit, not total pageviews
timeOnSiteSecondsAverage visit duration in seconds
trafficChangePercentCalculated month-over-month change; trafficChangeMoM retains the fractional form

Use the dates in trafficHistory and snapshotDate when comparing periods. An unavailable metric stays empty; a real zero stays zero.

Acquisition channels

trafficSources, directPercent, organicSearchPercent, paidSearchPercent, organicSocialPercent, paidSocialPercent, referralsPercent, mailPercent, displayAdsPercent, affiliatePercent, aiTrafficPercent, topTrafficChannel, topTrafficChannelPercent, organicPaidRatio, trafficConcentrationScore, acquisitionDiversityScore

The Channels view separates organic and paid search, organic and paid social, direct visits, referrals, email, display advertising, affiliates, and AI referrals. Flat *Percent fields use 0–100; values inside trafficSources use 0–1. Referral share measures the channel's contribution, not a list of referring URLs.

Geography, search, AI, and competitors

topCountryShares, topCountryCode, topCountrySharePercent, topKeywords, topKeyword, topKeywordVolume, aiTraffic, aiChatbotDistribution, aiTotalVisits, estimatedAiVisits, topAiPlatform, topAiPrompts, competitors, competitorCount, topCompetitor

Countries shows each available top country with countryCode, countryName, countryId, share, and sharePercent inside topCountryShares. Names are taken from the source's country dictionary. These are the leading countries, so their shares need not add up to 100%.

countryRank.countryCode / countryCode identify the country used for the country rank. topCountryCode identifies the first country in the audience breakdown. They can legitimately differ.

Keywords shows the leading term and an expandable topKeywords list with name, volume, cpc, and estimatedValue, as supplied by the source. Search-channel shares are split into organic and paid; the keyword list itself is not classified as OrganicKeywords or PaidKeywords. A CPC value does not prove that the website pays for that keyword. keywordDensity in Domain SEO & WHOIS is a separate analysis of words on the homepage, not search traffic.

For competitor discovery, use similar_sites or all: their similarSites lists include descriptions, estimated visits, categories and similarity signals. Similarity is a discovery signal, not a guarantee that every listed site is a direct business competitor.

Fields ending in Percent, such as topCountrySharePercent, use a 0–100 scale; the raw share inside topCountryShares uses a 0–1 fraction (0.4628 means 46.28%).

Illustrative country entry:

{
"countryCode": "US",
"countryId": 840,
"countryName": "United States",
"share": 0.2543,
"sharePercent": 25.43
}

Quality signals

dataCompletenessScore, riskFlags, isSmall, trafficDataAvailable, coverage, status

Every domain you submit comes back as a row. Similarweb only measures websites above a traffic threshold, so a small local business usually has no traffic figures at all. That is an answer about the website, not a failure, and it is returned as a normal row with trafficDataAvailable: false, coverage: "not_tracked_by_similarweb" and status: "not_tracked". These rows are never charged. Filter on trafficDataAvailable to split a list into "measured by Similarweb" and "too small to be measured" — for lead lists, that split is often the point of the run.

Competitor discovery works the same way: a website with no similar-sites profile comes back with coverage: "not_tracked_by_similarsites" instead of disappearing. Compare, Monitor and Map a market leave untracked websites out of the ranking, the baseline and the market shares — there is nothing to rank, watch or divide — but still return the row, free.

The legacy isDataFromGoogleAds key is retained for API compatibility only. It mirrors the source's IsDataFromGa flag and must not be used as evidence of Google Ads spending; use paidSearchPercent for paid-search traffic share.

riskFlags are deterministic signals such as traffic_decline, single_channel_dependence, high_bounce_rate, domain_expiring_soon, and limited_public_data. They are not an opaque AI score.

🧭 Competitor discovery fields

The similar_sites workflow returns:

{
"domains": ["docker.com", "notion.so"],
"mode": "similar_sites"
}

domain, title, description, category, categoryRank, totalVisits, thumbnail, screenshot, favicon, tags, similarSites, relatedApps, status

Each similarSites item can contain:

{
"site": "peer-site.test",
"description": "Example competitor website",
"category": "Business_and_Consumer_Services",
"similarityRank": 1,
"topCountryRank": 2400,
"totalVisits": 1850000,
"grade": 0.91,
"thumbnail": "https://example.test/example-preview.png"
}

Result fragments are illustrative. The runnable input examples use real websites.

🔍 Domain, company & technology fields

The aitdk workflow combines domain registration data with analysis of the public homepage. Open Results → Website to inspect it.

{
"domains": ["python.org", "docker.com"],
"mode": "aitdk"
}
  • whois: registrar, status, nameservers, DNSSEC, registration, expiration, and last-change dates
  • domainAgeDays, daysUntilDomainExpiration
  • keywordDensity: page title, visible token count, top tokens, counts, and frequencies
  • websiteIntelligence: page title, meta description, language, canonical URL, page image, company metadata, public social profiles, generator, and technology signals
  • companyName, companyLogo, companyFoundingDate, companyAddress
  • contactEmails, contactPhones, socialLinks
  • technologies, technologyCount

Contact details come only from what the homepage publishes — mailto: and tel: links and structured Organization data — so they are precise but not exhaustive: a website that hides its contacts returns empty lists rather than guessed values. Emails and phones are deduplicated, and a phone written two ways (+1 415 555 0100 and +14155550100) is collapsed into one. companyAddress holds whichever of street, locality, region, postal code and country the homepage declares.

Technology detection is based on visible homepage signatures and is labelled as detected or declared; it is not presented as a guaranteed full technology stack. A company logo is returned only when structured organization data explicitly identifies it as a logo — a generic Open Graph hero image is not mislabeled.

WHOIS fields are filled from the available registry data. When a registry record is unavailable, other collected details remain in the result and notes explains the missing part.

⚔️ Compare websites

Put the primary website first. Open Results → Compare to see each site's share, position and gap against that primary website.

{
"domains": ["nytimes.com", "theguardian.com", "cnn.com"],
"mode": "compare",
"maxConcurrency": 10
}

Comparison fields include:

primaryDomain, compareRank, trafficSharePercent, trafficGapVsPrimaryPercent, globalRankGapVsPrimary, growthRank, engagementRank, competitivePositionScore, winnerMetrics

Illustrative result fragment:

{
"domain": "competitor-a.test",
"mode": "compare",
"primaryDomain": "primary-site.test",
"compareRank": 2,
"trafficSharePercent": 31.42,
"trafficGapVsPrimaryPercent": -38.7,
"growthRank": 1,
"engagementRank": 3,
"winnerMetrics": ["growth"]
}

🔔 Monitor changes

Run the same domains with the same Monitor name (monitorName) to compare against the previous successful check. Open Results → Changes for the outcome. The older API spelling monitorKey is also accepted; use monitorName in new inputs.

{
"domains": ["python.org", "docker.com"],
"mode": "monitor",
"monitorName": "weekly-competitors",
"monitorDepth": "base_data",
"changeThreshold": "medium",
"onlyChanges": false
}

The first run returns changeStatus: "baseline". Later runs return changed or unchanged and can include:

checkedAt, previousCheckedAt, changeSeverity, changedMetrics, recommendedAction

Sensitivity presets:

  • low: catches smaller movements
  • medium: recommended default
  • high: reports only major movements

monitorDepth: "base_data" returns traffic data. monitorDepth: "all" also returns competitor discovery, WHOIS and homepage insights (including company contacts) as context. changedMetrics compares traffic, ranks, engagement, channel shares, search keywords and the available competitors and AI-platform lists. The discovery list similarSites, WHOIS and homepage insights remain contextual fields in the returned record.

Set onlyChanges: true to omit unchanged rows. For example, checking two unchanged websites produces zero result rows and two paid monitoring checks. Run summary reports the checks in filteredUnchanged and details.unchanged.

🕸️ Build a market map

Market Map starts with one or more seed domains, discovers related sites, deduplicates them, enriches the strongest candidates, and calculates share inside the returned landscape.

{
"domains": ["docker.com"],
"mode": "market_map",
"marketMapMaxCompetitors": 2,
"maxConcurrency": 10
}

The main dataset contains site rows with:

marketRole, sourceSeedDomains, similarityGrade, similarityRank, marketTrafficSharePercent, marketRank, emergingCompetitor

Open Results → Market for the website rows. The separate Market links destination contains one edge per returned seed-to-competitor connection:

{
"seedDomain": "seed-site.test",
"competitorDomain": "peer-site.test",
"similarityRank": 1,
"grade": 0.91,
"competitorVisits": 1850000,
"competitorGlobalRank": 43210,
"trafficChangePercent": 8.4,
"marketTrafficSharePercent": 17.6,
"category": "Business_and_Consumer_Services"
}

📥 Input reference

FieldTypeDefaultNotes
domainsarray of stringsrequiredWebsites in the input. Domains or full URLs; normalized, deduplicated and validated
modestringbase_dataWorkflow in the input — one of the seven above
includeInDepthbooleanfalseEverything we can get · try extra audience data. Audience age/gender, referrers and rank history; off by default. Other workflows ignore it
maxDomainsinteger10000Stop if the list is longer than — guards against a huge pasted list
monitorNamestringmy-monitorTrack changes · tracker name. Reuse it on later checks; monitorKey remains an accepted API alias
monitorDepthstringbase_dataTrack changes · how much to track. all adds competitor and domain details
changeThresholdstringmediumTrack changes · what counts as a change — low, medium or high
onlyChangesbooleanfalseTrack changes · return only what changed, after the first run
marketMapMaxCompetitorsinteger10Map a market · how many competitors to add — up to 100
minMonthlyVisitsintegeremptyKeep websites with at least — minimum monthly visits
maxMonthlyVisitsintegerempty…and at most — maximum monthly visits
maxGlobalRankintegeremptyGlobal rank no worse than — keep sites inside this Similarweb rank
minTrafficChangePercentintegeremptyMonth-over-month growth of at least, in percent; negative values allowed
maxBounceRatePercentintegeremptyBounce rate no higher than, in percent
includeCategoriesarray of strings[]Categories to keep — matched against the Similarweb category
excludeCategoriesarray of strings[]Categories to skip
topCountriesarray of strings[]Top visitor country is one of — two-letter codes
minCountrySharePercentintegerempty…bringing at least this share of visits — with topCountries, keeps sites whose listed countries together bring this share
maxCountryRankintegeremptyCountry rank no worse than — rank in the site's main country
maxCategoryRankintegeremptyCategory rank no worse than — rank in its Similarweb category
maxTrafficChangePercentintegerempty…and at most — upper limit for month-over-month change; negative finds declining sites
minPagesPerVisitnumberemptyPages per visit at least
minTimeOnSiteSecondsintegeremptyTime on site at least, in seconds
topTrafficChannelsarray of strings[]Main traffic channel is one of — direct, organic_search, paid_search, organic_social, paid_social, referrals, email, display_ads, affiliate, ai
minOrganicSearchPercentintegeremptyOrganic search at least, in percent of visits
minPaidSearchPercentintegeremptyPaid search at least, in percent of visits
minAiTrafficPercentintegeremptyAI assistants at least, in percent of visits
minDomainAgeYearsnumberemptyDomain at least this old, in years since WHOIS registration
maxDomainAgeYearsnumberempty…and at most this old
requireContactEmailbooleanfalseOnly websites with a public email on the homepage
requireContactPhonebooleanfalseOnly websites with a public phone on the homepage
includeTechnologiesarray of strings[]Uses one of these technologies — matched against the detected tech stack
excludeTechnologiesarray of strings[]Skip websites using these technologies
includeTldsarray of strings[]Domain ends with — for example .de, .co.uk
excludeTldsarray of strings[]Skip domain endings
maxConcurrencyinteger10Websites at a time — 1–50
proxyConfigurationobjectActor defaultProxy. Keep the default unless you have your own

🎯 Keep only the websites you want

Filters run on the finished record, before billing, so a website you filter out is never saved and never charged: size (minMonthlyVisits, maxMonthlyVisits), rank (maxGlobalRank, maxCountryRank, maxCategoryRank), growth (minTrafficChangePercent, maxTrafficChangePercent), quality (maxBounceRatePercent, minPagesPerVisit, minTimeOnSiteSeconds), topic (includeCategories, excludeCategories), audience (topCountries, minCountrySharePercent) and traffic channel (topTrafficChannels, minOrganicSearchPercent, minPaidSearchPercent, minAiTrafficPercent).

They pay off most where the Actor finds websites for you — Map a market and Find competitors — but work in every workflow that carries traffic data: Traffic & audience, Everything we can get, Compare and Track changes. SEO keywords & tech stack collects no traffic, so traffic filters stay inactive there and the run says so in inputWarnings.

A second group reads the WHOIS record and the homepage, so it applies to SEO keywords & tech stack and Everything we can get: domain age (minDomainAgeYears, maxDomainAgeYears), contacts (requireContactEmail, requireContactPhone) and tech stack (includeTechnologies, excludeTechnologies). Domain endings (includeTlds, excludeTlds) work in every workflow. If a homepage could not be read, requireContactEmail, requireContactPhone and includeTechnologies drop that website rather than charge for a row that may lack what you asked for; excludeTechnologies keeps it.

A website whose metric Similarweb does not publish is kept rather than dropped, so filtering never looks like data loss. Every run reports what it removed: filteredOut is the total, filterBreakdown counts the drops per setting, and filterHint names the costliest one in plain words, for example "18 of 40 website(s) were removed by your filters, 15 of them by minMonthlyVisits. To keep more, lower minMonthlyVisits."

📦 Outputs and table views

The output menu has four destinations. Choose Results to browse website data, then switch topics using the tabs above the table. Overview starts with the headline metrics; detailed fields remain available in the topic views and dataset export.

DestinationContains
ResultsWebsite records and their topic views
Market linksSeed-to-competitor relationships from Market map
ErrorsFailed lookups, stored separately and never charged as results
Run summaryCounts, timing, filters and workflow details

Within Results, use these topic tabs. Start with Competitors for competitor discovery and Website for Domain SEO; traffic metrics belong to workflows that collect traffic data.

OutputContains
OverviewWebsite, category, monthly visits, growth, global rank, leading country, top channel, AI-referral share, bounce rate and status
TrafficTraffic history, growth and engagement
ChannelsSource percentages, concentration, and diversity
CountriesLeading country plus country names, codes and audience shares
KeywordsLeading term plus keyword text, volume, CPC and source-estimated value
AI trafficAI share, chatbot distribution and available prompts
CompetitorsSimilar websites, direct competitors, tags and related apps
ContactsCompany name, founding year, postal address, emails, phones and social profiles
WebsitePreview, category, company, WHOIS, technologies and collection details
CompareLeaders, shares and gaps between compared websites
ChangesBaselines and material changes from Monitor
MarketEnriched seed and competitor websites

Contacts and Website come from SEO keywords & tech stack and Everything we can get. Compare, Changes and Market show their corresponding workflow results. Switching views does not collect data or create additional charges. Export the full dataset to keep all original fields; display presets do not remove stored values.

📤 Traffic & audience example

Illustrative result fragment showing the field structure:

{
"domain": "demo-site.test",
"mode": "base_data",
"snapshotDate": "2026-07-01T00:00:00+00:00",
"globalRank": 18420,
"estimatedMonthlyVisits": {
"2026-05-01": 220000,
"2026-06-01": 238000,
"2026-07-01": 245000
},
"latestMonthlyVisits": 245000,
"previousMonthlyVisits": 238000,
"trafficChangePercent": 2.94,
"trafficTrend": "stable",
"bounceRatePercent": 41.2,
"pagesPerVisit": 3.84,
"timeOnSiteSeconds": 176.5,
"directPercent": 31.0,
"organicSearchPercent": 46.0,
"aiTrafficPercent": 2.1,
"topTrafficChannel": "Organic search",
"topCountryCode": "US",
"topKeyword": "demo analytics",
"topAiPlatform": "chatgpt.com",
"dataCompletenessScore": 92,
"riskFlags": [],
"status": "ok"
}

Traffic values are estimates tied to the source snapshot date, not real-time analytics or exact first-party measurements.

🔌 API examples

Set the APIFY_TOKEN environment variable to your Apify API token. These examples use Bash syntax.

Start a run:

curl -X POST "https://api.apify.com/v2/acts/trakk~similarweb-scraper/runs" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains":["python.org","docker.com"],"mode":"base_data","maxConcurrency":2}'

Run synchronously and receive dataset items:

curl -X POST "https://api.apify.com/v2/acts/trakk~similarweb-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains":["nytimes.com","theguardian.com","cnn.com"],"mode":"compare"}'

Python, with the official apify-client package:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("trakk/similarweb-scraper").call(run_input={
"domains": ["python.org", "docker.com"],
"mode": "base_data",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["domain"], item.get("latestMonthlyVisits"), item.get("topTrafficChannel"))

JavaScript / Node.js, with apify-client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('trakk/similarweb-scraper').call({
domains: ['nytimes.com', 'theguardian.com', 'cnn.com'],
mode: 'compare',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.table(items.map((i) => ({ domain: i.domain, share: i.trafficSharePercent, rank: i.compareRank })));

For larger jobs, start an asynchronous run and consume the output URLs returned with the run. Dataset items can be exported as JSON, JSONL, CSV, Excel, XML, HTML, or RSS.

📅 Schedules, webhooks & integrations

  • Weekly competitor watch: save a Track changes input as a task and add an Apify Schedule, for example every Monday. Keep the same Monitor name so each run compares against the last one, and turn on onlyChanges to receive only what moved.
  • Alerts: add a webhook on Run succeeded to post the dataset URL to Slack, email or your own endpoint.
  • Spreadsheets: connect the Actor to Google Sheets, Make, Zapier or n8n through the Apify integrations and map flat columns such as latestMonthlyVisits or organicSearchPercent straight into a sheet.
  • AI agents: the Actor can be called as a tool through the Apify MCP server, so an assistant can look up website traffic on demand.

⚙️ Following a run

  • Completed website profiles appear in the dataset during collection.
  • Compare and Market map calculate shares across the collected group before saving their final rows.
  • Run summary shows saved results, partial records, errors, filtered checks and elapsed time.
  • ok identifies a successful collection; partial keeps the available data and explains missing parts in notes. Failed lookups appear in Errors.

Start with the default 256 MB run configuration. Duration depends on workflow depth, the number of websites and source response times.

The run summary exposes validDomains, scheduledDomains, skippedByChargeLimit, and details.chargeLimitReached. If a budget limits a comparison or market map, its shares describe the collected group, not the websites that were not processed.

🧮 Tips for large lists

  • Paste the whole list. Up to 10,000 websites per run; duplicates, www. prefixes and full URLs are normalised for you.
  • Filter before you pay. Set Keep websites with at least or Global rank no worse than so small sites you do not need are never charged.
  • Keep the default proxy and concurrency. 10 websites at a time on Apify Residential is the tested setting; raise it only for very large lists.
  • Set a budget. Maximum charge per run caps the cost; the Actor plans the run around it and reports what it skipped.
  • Start with Traffic & audience. It is the fastest workflow. Run Everything we can get only on the websites that passed your first filter.

❓ FAQ

Do old inputs still work?

Yes. base_data, similar_sites, aitdk, and all keep their existing values and legacy nested fields. The new flat fields are additive.

Why is a field empty?

Public coverage varies by domain, size, source, and snapshot. Optional fields remain null, empty arrays, or empty objects instead of being guessed.

What happens if I enter something incorrectly?

Invalid website entries are skipped with a warning. If none remain, or an input setting is invalid, the Actor exits normally with zero results and an explanation in Run summary (status: invalid_input, message, actionNeeded), without requesting website data. Apify's input form can also reject incorrectly typed settings before a run starts. Diagnostic messages are not inserted into the paid results dataset.

Does a country or keyword view create extra billable results?

No. These views display arrays already stored inside a website result. They do not create new dataset items or trigger extra collection events.

Are failed domains mixed into my export?

No. Valid, partial and untracked results go to the default dataset. Real failures — a source that refused or answered with nothing usable — go to Errors with a short reason such as not_found or source_unavailable; they are not charged as collection results.

I submitted 100 domains and got far fewer rows. Where did the rest go?

They should now all be there. Until September 2026 a domain Similarweb does not measure was dropped silently, so a list of small businesses could finish as a successful run with an empty dataset. Those domains are now returned with trafficDataAvailable: false and cost nothing. If a domain is still missing, it is in the Errors dataset with the reason.

Does onlyChanges make unchanged monitoring checks free?

No. It filters unchanged rows from the result dataset after the Actor checks the source and compares the saved baseline. The run summary tells you exactly how many checks were filtered.

What does in-depth data cost me?

Nothing beyond the Everything we can get result event. Websites with no in-depth profile come back with indepthStatus: "unavailable" and a note, and are charged exactly like any other row.

Why did in-depth data stop partway through my run?

Open Run summary and inspect details.inDepth.stoppedBecause. If the reason is the run's spending limit, increase Maximum charge per run for the next collection. If it mentions the captcha budget, the source demanded more checks than the run could fund; retry the remaining websites in a separate run. If a profile is unavailable from the source, review the returned notes and retry that website later. Other collected website data remains available.

Why are some referrers missing from the in-depth lists?

Similarweb withholds part of those lists from anonymous visitors and ships the withheld entries with an empty domain. Exporting them would put blank rows in your spreadsheet, so they are dropped and counted in indepthWithheldRows. The incomingReferrerCount and outgoingReferrerCount totals still reflect the full figure the source reports.

Do I need a Similarweb account or API key?

No. The Actor reads publicly available data and needs only your Apify account.

How fresh is the data?

Every run fetches the latest data the sources publish at that moment. Similarweb updates its figures monthly, so the newest month in trafficHistory and snapshotDate is usually the previous calendar month.

Can I get more than three months of traffic history?

The public source publishes the last three months per run. To build a longer history, schedule a Track changes run monthly: each check is stored and compared with the previous one.

Can I get daily or weekly visits?

No. The source publishes monthly estimates only; running more often returns the same month until Similarweb publishes the next one.

How accurate are the numbers?

They are Similarweb's modelled estimates, not the website's own analytics. They are best used to compare websites and spot trends; small sites carry more uncertainty than large ones.

Is technology detection definitive?

No. It reports signatures present on the public homepage. Server-side and hidden technologies may not be visible.

Which examples can I run?

The input examples use real websites and can be copied into Input → JSON. The result fragments use illustrative values and reserved .test domains to explain the field structure. A live run returns the latest data available from its sources.