Similarweb Pro Scraper avatar

Similarweb Pro Scraper

Pricing

from $0.015 / website result

Go to Apify Store
Similarweb Pro Scraper

Similarweb Pro Scraper

Export Similarweb website traffic, SEO, audience, advertising and backlink data for competitor research and agency reporting. Choose from 27 report pages and get period-labelled records with JSON files for large reports.

Pricing

from $0.015 / website result

Rating

0.0

(0)

Developer

AgentX

AgentX

Maintained by Community

Actor stats

2

Bookmarked

113

Total users

41

Monthly active users

4 hours ago

Last modified

Security

Limited permissions

Share

Export Similarweb website traffic, SEO, audience, advertising and backlink data for competitor research and agency reporting. Choose from 27 report pages and get one website result with period-labelled records, item counts and JSON files for large reports.

Open input | Pricing

Why Choose Similarweb Pro Scraper

  • Research a domain in one place. Combine selected traffic, SEO, audience and advertising reports under one website identity.
  • Choose the reports for your job. Start with traffic engagement and social sources, then add keywords, landing pages or backlinks for deeper research.
  • Keep reporting periods attached. Section records carry period_start and period_end for comparable reporting.
  • Use the data in your workflow. Export nested JSON and retrieve large-report files through report_context[report_key].file_url.

Quick Start Guide

Use the prefilled website and report selection for a first run.

1. Configure

Enter apify.com in Website and select traffic_engagement, social, and display_campaigns in Reports. A website URL is normalized to its domain with a leading www. removed, so https://www.apify.com/store requests apify.com. The result's website field uses that normalized domain.

Use these two inputs for your first run:

{"website":"apify.com","reports":["traffic_engagement","social","display_campaigns"]}

2. Run

Start the Actor and wait for the run to finish. Collection time depends on the selected reports, available history and volume of source data. For a broader analysis, add further report pages in a subsequent run after reviewing the first result.

3. Collect

Open the Dataset and export the website result as JSON. Inspect the selected top-level report fields and their entries in report_context. Retrieve each non-null report_context[report_key].file_url and save it with the Dataset export.

Input Configuration

The input parameters are website and reports, both required and shown in that order. The form prefills the example below; supply both values in automated runs.

ParameterTypeRequiredDescriptionExample
websitestringYesOne public domain or website URL; a leading www. is removed from the normalized domain.apify.com
reportsarray of stringsYesOne or more of the 27 report-page selections. Duplicate selections are combined.["traffic_engagement", "social", "display_campaigns"]
{
"website": "apify.com",
"reports": ["traffic_engagement", "social", "display_campaigns"]
}

Report pages

The report keys match the Reports selector exactly. Available items vary by website, source coverage and reporting period.

Report keyContent
website_performanceProfile, engagement, devices, rankings, traffic trend, visits, geography and channels.
similar_sitesSimilar-site candidates.
traffic_engagementEngagement, device metrics, rankings, traffic trends, new and returning users, and visit totals.
marketing_channelsMarketing sources, channel shares, trends and changes.
audienceGeography, demographics, interests and age/gender audience sections.
search_overviewSearch traffic, volume, brand split and keyword distribution.
referralReferring and outgoing websites, plus referral trends.
advertiser_overviewAdvertising metrics, counts and graph observations.
publisher_overviewPublisher metrics, advertisers and totals.
socialSocial sources and trends.
seo_overviewSearch summaries, trends, SERP features and ranking trends.
keywordsOrganic keywords and keyword summary selections.
keyword_clustersKeyword topic clusters.
landing_pagesOrganic landing-page snapshots by available month.
search_competitorsSearch competitors and overlap measures.
ranking_distributionRanking trends and US keyword/position tables.
ai_trafficAI assistant contributions and AI landing pages.
paid_keywordsPaid keywords and paid-search summary selections.
paid_landing_pagesPaid landing-page snapshots and summary measures.
search_adsText search ads and search campaigns.
display_campaignsDisplay campaign records.
display_adsDisplay creative records.
display_publishersDisplay publishers and reach.
advertiser_activityAdvertising channels, trends and geography.
backlinks_overviewBacklink summary, trend and changes.
referring_domainsReferring-domain records.
backlinksIndividual backlink records.

Reporting periods and coverage

Reporting windows are selected from the source's available history. Similar-site and search-competitor sections use up to the latest three available months. Organic and paid landing pages, US ranking keywords and position tables are collected as individual available monthly snapshots. Backlink trends use their own source reporting window.

Available history can move between runs. Compare the saved period labels as well as item counts when reviewing a website over time.

Marketing comparison sections use the complete month before the available reporting window's end month. A comparison outside that calendar is reported unavailable.

Each paginated list returns at most the first 1,000 distinct source entries per section and reporting period, in source order. This applies to keywords, landing pages, referring domains, backlinks, paid lists, marketing sources and the other paginated sections. The limit applies to each underlying section, so a report with several sections or monthly snapshots can contain more than 1,000 items in total. Reaching this limit completes the selected list scope; billing follows the items actually delivered.

General traffic analysis uses worldwide coverage; the US keyword and position sections use US data. Read each section and period in its own context when comparing measures. An undated section carries null period boundaries.

Output Data Schema

One Dataset row represents one website and its selected report pages. Selected report keys appear directly on the row; unselected report fields are omitted.

Root fieldTypeDescription
websitestringWebsite identified by the source, or the requested domain for a definitive not_found result.
Selected report keys, such as traffic_engagement, social and display_campaignsobjectEach inline object maps section names to record arrays. A null report may be file-backed or unavailable; inspect its context.
report_contextobjectPer-report storage, file link, item count, and section statuses, counts and periods.
item_countintegerDistinct delivered source-section items, counted once when reports overlap; used for report-item billing. It can differ from the number of displayed records.
statusstring, when presentnot_found identifies definitive source absence; this row has no Website Result or Report Items charge.
processorstringApify actor URL that processed this record.
processed_atstringUTC timestamp when this record was processed.

An identified website whose selected reports are conclusively empty also returns one free not_found row, with no report data. If the requested website data cannot be obtained, no answer row is returned. File-backed profile records retain the same title, description, category, employees, founding year and tags as inline records.

An empty response alone does not confirm absence. When the source's empty or zero-data answer cannot be confirmed, no answer row is saved.

Each inline report section is a record array, with period_start and period_end on each record. An empty array means no mapped records for that section; a null section means its data is unavailable. For a file-backed report, the top-level report value is null, report_context[report_key].storage is file, and file_url links to the report's full section object. A null report without a file link is unavailable.

report_context[report_key].sections lists each section's period, item count and collection status: complete, empty, unavailable, not_started, or a partial outcome such as source_window, rate_limited or partial. complete means collection finished for that section within its declared selection limit; empty means no items were returned for that section, although source summary metrics can remain. Partial outcomes retain the records read before collection stopped. These statuses do not establish exhaustive source coverage. Context counts describe displayed records; the root item_count counts distinct source items and can differ. Check the saved data and run status message together, including when the platform run succeeds.

Unfinished sections retain partial status and the records collected. Check the saved website row and report_context before using a report in downstream analysis. An unidentified website with only zero, missing or provider-placeholder data has no paid row or report-item charge.

Business fields

Report records contain the business fields relevant to their section: keywords include search measures; campaign records include advertising measures; numeric observations use metric, dimensions and value or series_values. Missing fields may be absent or null; genuine zero and false values remain intact.

Example item fieldDescription
monthly_visitsSource estimated monthly website visits; profile and engagement may use different source models.
visit_durationAverage visit duration in seconds.
visit_pagesAverage pages per visit.
spendSource estimated advertising spend; interpret the source unit without assuming a currency.
cpcSource estimated cost per click; interpret the source unit without assuming a currency.
parent_entitySource parent domain or advertising entity of a group member.
site_metricsSource per-website keyword clicks, shares, SERP features and top destinations.

The Dataset schema declares 33 top-level fields and 28 views; individual report objects have section-specific business fields. Shares retain their source scale. Evaluate a measure together with its section, dimensions and period; group aggregates and group members describe different levels of the same population.

Complete record field reference

Fields apply to the sections that supply them; a report does not populate every field. Missing facts remain null or absent. Counts and measures are source estimates where applicable. Shares and changes retain the source scale: their names alone do not establish a denominator or comparison period.

In a profile, country_id identifies the traffic-ranking scope, rather than the company's location. top_country is the source identifier of the highest-traffic country.

Record fieldTypeMeaning
active_daysnumberActive day count.
active_monthsarrayActive months.
ad_countnumberAdvertisement count.
ad_idnumber / stringSource record identifier.
ad_typestringAdvertisement type.
affinityJSON value / numberWebsite affinity score.
anchor_textstringSource backlink anchor text.
assistant_sharesarray / boolean / number / object / stringSource traffic shares by AI assistant.
assistant_splitarray / boolean / number / object / stringAI-assistant split in the source representation.
assistant_visitsobjectSource visit counts by AI assistant.
average_volumenumberAverage search volume.
backlink_countnumberBacklink count.
bounce_ratenumberBounce rate.
campaign_idnumber / stringSource record identifier.
categoryJSON value / stringCategory.
category_rankinteger / number / stringCategory rank.
changeJSON value / numberMonthly click change; traffic change; visit change. Retains the source scale and period.
change_statestringSource click-change label, such as New, Lost, Positive, Negative, NoChange or NoData.
channelJSON valueMarketing channel.
clicksnumberClick count.
clicks_changenumberClick change. Retains the source scale and period.
clicks_trendarray / boolean / number / object / stringSource click observations indexed by date or source label.
competitionnumberKeyword competition.
country_idnumber / stringSource country identifier; not necessarily an ISO code.
country_rankinteger / number / stringCountry rank.
cpcnumberEstimated cost per click; currency is not inferred.
cpc_highnumberHigh-bid cost-per-click estimate; currency is not inferred.
cpc_lownumberLow-bid cost-per-click estimate; currency is not inferred.
creative_countnumberCreative count.
creative_idnumber / stringSource record identifier.
creative_typestringCreative type.
datestringSource observation date or date label; no timezone is inferred.
dedup_usersnumberAverage monthly deduplicated user count.
descriptionJSON value / stringDescription.
desktop_clicksnumberDesktop click count.
destination_urlstringSource advertisement destination.
difficultynumberKeyword difficulty.
domainJSON value / stringSource domain.
domain_authoritynumberDomain authority score.
domain_scorenumberDomain score.
employeesJSON valueSource employee-count range as text.
engagement_scorenumberEngagement score.
filtered_sharenumberFiltered traffic share. Retains the source scale and period.
first_seenstringSource first-seen date or date/time label; no timezone is inferred.
follow_pagesnumberFollow referring page count.
foundedstringSource founding year, represented as text.
global_rankJSON value / integer / number / stringGlobal rank.
has_adsenseJSON value / booleanHas ad sense.
image_sizestringSource creative image dimensions as text.
image_urlstringSource image link; no separate image download is promised.
impressionsnumberImpression count.
impressions_changenumberImpression change. Retains the source scale and period.
impressions_newbooleanHas new impressions.
impressions_sharenumberImpression share. Retains the source scale and period.
industryJSON valueSource industry taxonomy, with identifiers and category paths.
is_brokenbooleanIs broken.
is_imagebooleanIs image.
is_lostbooleanIs lost.
is_newJSON value / booleanIs new.
is_subdomainbooleanIs subdomain.
keywordstringKeyword.
keyword_countnumberKeyword count.
keyword_overlaparray / boolean / number / object / stringKeyword overlap.
large_image_urlstringLarger source image link, when supplied.
last_seenstringSource last-seen date or date/time label; no timezone is inferred.
lost_backlinksnumberLost backlink count.
lost_domainsnumberLost referring domain count.
monthly_visitsnumberEstimated monthly visits. Profile snapshots and engagement averages use separate source models.
nameJSON value / stringTitle.
networkstringSocial network.
new_backlinksnumberNew backlink count.
new_domainsnumberNew referring domain count.
nofollow_pagesnumberNo follow referring page count.
organic_clicksnumberOrganic click count.
organic_sharenumberOrganic click share. Retains the source scale and period.
overlapJSON valueSame day cross visitation rate.
overlap_changeJSON valueCross visitation change. Retains the source scale and period.
page_scorenumberPage score.
page_urlstringSource landing-page URL.
page_viewsnumberAverage monthly page view count.
parent_domainstringParent domain.
positionnumberSearch position.
previous_clicksnumberPrevious click count.
previous_positionnumberPrevious search position.
previous_sharenumberPrevious click share. Retains the source scale and period.
primary_intentstringPrimary search intent.
publisher_countnumberPublisher count.
ranknumberBacklink rank.
referring_domainsnumberReferring domain count.
referring_pagesnumberReferring page count.
referring_urlstringSource page containing the backlink.
related_appsJSON value / objectApplications grouped by store; groups contain app records or source store values.
relevancy_rankJSON valueAudience relevance rank.
relevancy_scoreJSON valueAudience relevance score.
search_volumenumberSearch volume.
secondary_intentstringSecondary search intent.
serp_datestringSource search-results observation date or label.
serp_featuresarraySearch features.
serp_typestringSearch feature.
share_splitarray / boolean / number / object / stringShare split in the source representation.
share_trendarray / boolean / number / object / stringSource share observations indexed by date or source label.
site_metricsarray / objectPer-website keyword observations, including clicks, shares, search features and destination pages.
site_sharesJSON value / array / boolean / number / object / stringSource per-website shares, keyed by website.
spendnumberEstimated advertising spend; currency is not inferred.
spend_changenumberAdvertising spend change. Retains the source scale and period.
spend_newbooleanHas new spend.
spend_sharenumberAdvertising spend share. Retains the source scale and period.
tagsJSON valueTags.
titleJSON value / stringTitle.
top_countryJSON value / number / stringSource identifier of the highest-traffic country.
top_keywordstringTop keyword.
top_urlstringTop page URL.
topic_idnumber / stringSource record identifier.
total_shareJSON value / numberTotal traffic share. Retains the source scale and period.
total_trafficarray / boolean / number / object / stringTotal traffic.
trafficarray / boolean / number / object / stringTraffic.
traffic_shareJSON value / numberAdvertising visit share; click share; traffic share; traffic source visit share; visit share. Retains the source scale and period.
unique_usersnumberAverage monthly unique user count.
url_countnumberUrl count.
users_sharenumberUser share. Retains the source scale and period.
video_urlstringSource video link, when supplied; no video download is promised.
visit_durationnumberAverage visit duration, in seconds.
visit_frequencynumberVisits per user.
visit_pagesnumberAverage pages per visit.
visitsJSON value / number / stringVisit count.
visits_changenumberAdvertising visit change. Retains the source scale and period.
visits_newbooleanHas new visits.
visits_trendarray / boolean / number / object / stringSource visit observations indexed by date or source label.
volume_statestringSource search-volume change label.
zero_sharenumberZero click rate. Retains the source scale and period.
metricstringSource numeric-measure name; interpret with its section and dimensions.
dimensionsarrayLabels aligned to the numeric observation or series.
valuenumberSource numeric observation; the unit follows its metric.
series_valuesarray / objectSource numeric series; preserve its labels and scale.
total_countnumberSource aggregate count for this section, separate from delivered website rows.
source_facetsobject / arraySource facet labels, identifiers and counts.
top_source_facetsobject / arraySource leading facet labels, identifiers and counts.
source_segmentsobject / arraySource segment definitions or counts.
categoriesarrayCategory counts; nested entries may contain category, count, id and categories.
entity_scopestringWhether the record is a source group or a member.
parent_entitystringParent website or advertising entity for a member record.
page_groupJSON valueSource AI landing-page group.
landing_idstring / numberSource landing-page identifier.
display_pathstringSource ad display path when no destination URL is available.
period_startstringStart of this record's source reporting period.
period_endstringEnd of this record's source reporting period.

Nested site_metrics records use site (website), value (click count), share, previous_share, serp_features and top_url. A website or date can also be an object key. industry records use id and path. Application records in related_apps use store, id, title, author, icon, category, price, rating and ratecount; prices remain source text and store-specific values can vary. Additional source business fields can appear under normalized field names, retaining their value types. Do not infer a new meaning or unit for such a field.

Each report context has storage (inline, file or unavailable), file_url (string or null), item_count (integer displayed-record count) and sections (object keyed by section). With unavailable storage, the report and file_url are null. Section period records contain status (complete, empty, partial, not_started or a specific unavailable/error state such as schema_changed or rate_limited), item_count (integer), period_start and period_end (string or null). A section can retain valid records while its status reports incomplete collection. A report file contains the same section arrays as inline delivery.

Nested record fieldTypeMeaning
site_metrics.*.sitestringWebsite associated with a keyword observation.
site_metrics.*.valuenumberSource click count for that website.
site_metrics.*.share, previous_sharenumberCurrent and comparison traffic shares at the source scale.
site_metrics.*.serp_featuresarraySource search-result feature labels.
site_metrics.*.top_urlstringSource leading destination page.
industry.idstring, numberSource taxonomy identifier.
industry.patharraySource category hierarchy.
related_apps.<store>.*.storestring or numberSource application-store identifier.
related_apps.<store>.*.idstring or numberSource application identifier.
related_apps.<store>.*.title, authorstringApplication title and source publisher name.
related_apps.<store>.*.iconstringSource application image link.
related_apps.<store>.*.categorystringSource application category.
related_apps.<store>.*.pricestring, numberSource price text or value; currency is not inferred.
related_apps.<store>.*.rating, ratecountnumberSource rating and review count.
categories.*.categorystringSource category label.
categories.*.countnumberSource count for that category.
categories.*.idstring, numberSource category identifier.
categories.*.categoriesarrayChild categories with the same structure.

Store-specific native application values and additional source business fields can have other JSON types. They remain source-defined rather than being converted into a fixed business fact.

Illustrative, abbreviated output for the apify.com input with all three prefilled reports. Example values and counts demonstrate the shape; actual periods and values vary by run. Additional sections and fields are omitted.

{
"website": "apify.com",
"traffic_engagement": {
"engagement": [
{
"monthly_visits": 100000,
"visit_duration": 120,
"visit_pages": 3,
"period_start": "2026-03-01",
"period_end": "2026-08-31"
}
]
},
"social": {
"social": [
{
"network": "Youtube",
"traffic_share": 0.5,
"period_start": "2026-03-01",
"period_end": "2026-08-31"
}
]
},
"display_campaigns": {
"campaigns": [
{
"campaign_id": "apify.com",
"creative_count": 2,
"period_start": "2026-03-01",
"period_end": "2026-08-31"
}
]
},
"report_context": {
"traffic_engagement": {
"item_count": 1,
"storage": "inline",
"file_url": null,
"sections": {
"engagement": [
{
"status": "complete",
"item_count": 1,
"period_start": "2026-03-01",
"period_end": "2026-08-31"
}
]
}
},
"social": {
"item_count": 1,
"storage": "inline",
"file_url": null,
"sections": {
"social": [
{
"status": "complete",
"item_count": 1,
"period_start": "2026-03-01",
"period_end": "2026-08-31"
}
]
}
},
"display_campaigns": {
"item_count": 1,
"storage": "inline",
"file_url": null,
"sections": {
"campaigns": [
{
"status": "complete",
"item_count": 1,
"period_start": "2026-03-01",
"period_end": "2026-08-31"
}
]
}
}
},
"item_count": 3,
"processor": "https://apify.com/agentx/similarweb-pro-scraper",
"processed_at": "2026-11-04T12:00:00Z"
}

JSON preserves the report structure and is the recommended export for further processing. For CSV or spreadsheet analysis, flatten a selected report's section arrays and retain website, section and period columns. Shared sections can appear under multiple selected report pages, so deduplicate by analytical meaning before combining them.

Integration Examples

Run Actor ID E4aGcMycvf3cTbkgm (agentx/similarweb-pro-scraper) asynchronously, wait for completion, and retrieve its Dataset and referenced report files.

Actor ID

Use this Actor ID in API calls, SDKs, Make.com and n8n:

E4aGcMycvf3cTbkgm

In REST API paths, the name form agentx~similarweb-pro-scraper is an equivalent alternative to the Actor ID.

cURL

Requires Bash, cURL and jq. Keep the returned run ID: a client wait ending can leave the run active. Each new start creates another billed run. These examples use the Quick Start input and read every Dataset page, including any saved output from an unsuccessful run.

set -euo pipefail
export APIFY_TOKEN="YOUR_APIFY_TOKEN"
API="https://api.apify.com/v2"
RUN=$(curl --fail --silent --show-error -X POST \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
--data '{"website":"apify.com","reports":["traffic_engagement","social","display_campaigns"]}' \
"$API/acts/E4aGcMycvf3cTbkgm/runs")
RUN_ID=$(printf '%s' "$RUN" | jq -er '.data.id')
DATASET_ID=$(printf '%s' "$RUN" | jq -er '.data.defaultDatasetId')
printf 'Run ID: %s\n' "$RUN_ID" >&2
while true; do
STATE=$(curl --fail --silent --show-error \
-H "Authorization: Bearer $APIFY_TOKEN" "$API/actor-runs/$RUN_ID")
STATUS=$(printf '%s' "$STATE" | jq -er '.data.status')
case "$STATUS" in
SUCCEEDED|FAILED|TIMED-OUT|ABORTED) break ;;
esac
sleep 2
done
printf 'Run status: %s\n' "$STATUS" >&2
OFFSET=0
while true; do
PAGE=$(curl --fail --silent --show-error \
-H "Authorization: Bearer $APIFY_TOKEN" \
"$API/datasets/$DATASET_ID/items?format=json&clean=true&offset=$OFFSET&limit=1000")
printf '%s' "$PAGE" | jq -c '.[]'
COUNT=$(printf '%s' "$PAGE" | jq 'length')
[ "$COUNT" -lt 1000 ] && break
OFFSET=$((OFFSET + COUNT))
done

Python

Uses Python's standard library. Save the run ID if the client stops waiting, then resume polling that run.

import json
import os
import time
from urllib.request import Request, urlopen
API = "https://api.apify.com/v2"
HEADERS = {"Authorization": "Bearer " + os.environ["APIFY_TOKEN"],
"Content-Type": "application/json"}
def request(path, payload=None):
body = None if payload is None else json.dumps(payload).encode()
with urlopen(Request(API + path, data=body, headers=HEADERS), timeout=60) as response:
return json.load(response)
run = request("/acts/E4aGcMycvf3cTbkgm/runs", {
"website": "apify.com",
"reports": ["traffic_engagement", "social", "display_campaigns"],
})["data"]
print("Run ID:", run["id"])
while run["status"] not in {"SUCCEEDED", "FAILED", "TIMED-OUT", "ABORTED"}:
time.sleep(2)
run = request("/actor-runs/" + run["id"])["data"]
print("Run status:", run["status"])
offset = 0
while True:
page = request(f'/datasets/{run["defaultDatasetId"]}/items'
f'?format=json&clean=true&offset={offset}&limit=1000')
for website in page:
print(json.dumps(website))
if len(page) < 1000:
break
offset += len(page)

JavaScript

Uses Node.js 18 or later with built-in fetch. Save the run ID if the client stops waiting.

const API = "https://api.apify.com/v2";
const headers = {
Authorization: `Bearer ${process.env.APIFY_TOKEN}`,
"Content-Type": "application/json",
};
async function request(path, payload) {
const response = await fetch(API + path, {
method: payload === undefined ? "GET" : "POST",
headers,
body: payload === undefined ? undefined : JSON.stringify(payload),
});
if (!response.ok) throw new Error(`Apify returned ${response.status}`);
return response.json();
}
let { data: run } = await request("/acts/E4aGcMycvf3cTbkgm/runs", {
website: "apify.com",
reports: ["traffic_engagement", "social", "display_campaigns"],
});
console.log("Run ID:", run.id);
while (!["SUCCEEDED", "FAILED", "TIMED-OUT", "ABORTED"].includes(run.status)) {
await new Promise(resolve => setTimeout(resolve, 2000));
({ data: run } = await request(`/actor-runs/${run.id}`));
}
console.log("Run status:", run.status);
for (let offset = 0; ; ) {
const page = await request(`/datasets/${run.defaultDatasetId}/items`
+ `?format=json&clean=true&offset=${offset}&limit=1000`);
for (const website of page) console.log(website);
if (page.length < 1000) break;
offset += page.length;
}

Make.com

Use the Apify integration to start Actor ID E4aGcMycvf3cTbkgm with the apify.com example input. Save the run ID and Dataset ID, then use a run-completion notification or status polling before retrieving Dataset items. Read each selected top-level report or download its report_context[report_key].file_url when file-backed.

n8n

Start Actor ID E4aGcMycvf3cTbkgm with an HTTP Request node posting the apify.com JSON input to https://api.apify.com/v2/acts/E4aGcMycvf3cTbkgm/runs. Keep the returned run ID through a Wait/status-check loop. After completion, retrieve the Dataset, inspect report_context, and expand the selected section arrays into the rows your destination expects.

MCP

Use Apify's MCP integration to select agentx/similarweb-pro-scraper and submit the same website and reports values. Ask the client to wait for the run, inspect report_context and the saved data, and retrieve the website result and any referenced JSON files. See Apify integrations for connection options.

Pricing

A website result costs $0.02 on the FREE tier, report items cost $0.004 per started 1,000 delivered source items, and the Actor Start costs $0.01. One saved website result with 1–1,000 billable items therefore has a $0.034 event subtotal; the report selection alone does not guarantee that count. Each run has one $0.01 Actor Start charge.

EventFREEBRONZESILVERGOLD / PLATINUM / DIAMOND
Website Result$0.02000$0.01800$0.01600$0.01500
Report Items (per started 1,000)$0.00400$0.00360$0.00320$0.00300
Actor Start$0.01$0.01$0.01$0.01

The bill follows the delivered source-item count, not the number of visible records after formatting. Items in shared sections are counted once, even when a section appears under two selected pages. Detailed keyword, landing-page and backlink reports can increase the count; for 1,001–2,000 billable items, the FREE-tier event subtotal is $0.038 ($0.01 + $0.02 + 2 × $0.004). These calculations cover the listed events; check Apify for any additional platform or storage charges applicable to your account.

Whole Actor bill examples on the FREE pricing tier, using all three registered events:

Delivered outcomeActor StartWebsite ResultReport Items unitsActor bill
Quick Start: 1 website, 217 source items111$0.034
1 website, 6,025 source items117$0.058
Partial website result, 500 source items retained111$0.034
1 confirmed not_found row100$0.01
0 saved rows100$0.01

The source counts illustrate the arithmetic and can vary on a new run. A partial result is billed only for its saved website result and delivered source items. These are this Actor's charges at the stated tier; separately selected Apify services are outside these examples.

If a spending limit interrupts delivery or billing, inspect the saved Dataset and charged units. Any confirmed Report Items charge remains on the bill for the saved data; inspect that run before retrying. A definitive not_found row has no Website Result or Report Items charge; the Actor Start still applies. Source-access errors or interrupted collection can leave no website result. The data comes from the selected Similarweb Pro report pages.

Prices can change — the current published figures are on the Actor's pricing tab, and Apify explains the pay-per-event model in its Store pricing documentation.

Use Cases

Agency reporting. Compare traffic engagement and social sources for a client website, carrying each section's reporting period into the presentation. Keep source-estimated visits distinct from the client's own analytics.

SEO opportunity research. Analyze keywords, keyword_clusters and landing_pages together. Retain each keyword's source measures and each landing-page snapshot's month when prioritizing content work.

Advertising research. Combine paid_keywords, search_ads, display_campaigns and display_ads to review the source's observed search and display activity for a domain.

Prospect qualification. Use traffic, audience and geographic data to prepare domain-level research before outreach. Read the relevant profile and reporting window so each observation has a clear basis.

Backlink review. Analyze referring domains and individual backlinks alongside the backlink overview. Separate aggregate counts from individual records when preparing summaries.

Alternatives

Choose the research workflow whose data, delivery and account controls fit your task.

OptionUseful fit
Similarweb website interfaceInteractive exploration, chart review and source-provided analysis tools.
Similarweb's official APIDirect source integration with documented endpoint contracts and account credit controls.
SEO research suitesCombined research, project management and analyst workflows within one product.
Similarweb Pro ScraperSelected report pages packaged into a nested website result for Apify workflows.

Similarweb's official API uses data credits, with consumption depending on the endpoint and requested data. Compare the required report coverage and complete task cost when choosing an integration.

Limits and Troubleshooting

Report availability depends on the website, source coverage and reporting window.

  • An empty report: an empty section array has no mapped records for that website and period. Check its period and report_context; null or unavailable data is a different outcome.
  • Partial collection: inspect the saved sections and final run status; retain delivered data separately from complete results.
  • Different totals across sections: source models and aggregation levels can differ. Compare the same metric, section, geography and period.
  • An AI landing-page source window: source coverage can limit the available landing pages. A nonempty section is not proof of exhaustive coverage.
  • A large report uses a file: download report_context[report_key].file_url and process the same section arrays and record-level periods as inline data.
  • A run ends before final delivery: inspect the Dataset and final run status; delivery is finalized as one website result after collection. Plan dependent workflows around the terminal run and its actual saved outputs.
  • A row has status: "not_found": the source confirmed absence for that domain; the row is saved without Website Result or Report Items charges. Check the domain spelling. An unrecognized-site or access error is not confirmation of absence.
  • Large report selections: group detailed pages by task, such as traffic or SEO, and review each saved website result before expanding the analysis.
  • Unavailable sections: source access or report availability can prevent data retrieval. Inspect report_context and the run status message; use the sections actually saved without assuming every selected report completed.
  • Reports could not be saved: the final status identifies a saving failure. Keep any confirmed results; the unsaved reports are unavailable in that run.
  • A cost-limit message: inspect saved results and charges; if needed, select fewer reports for a later run. A new start has its own Actor Start charge.
  • A temporary access message: send support the run ID and selected reports for help with the unavailable data.

For a reproducible problem, open an Issue with the run ID, exact input, affected report and expected output.

Trust and Reliability

The Dataset schema has 33 top-level fields and 28 views. Selected report objects contain section-specific records; report_context supplies storage, counts, statuses and periods. These fields help you interpret what was saved.

Similarweb metrics include modeled estimates. See Similarweb's data methodology for the source's explanation of its data inputs and modeling. Treat these metrics as source-estimated research data, and use first-party analytics for direct measurement of a website you operate.

Keep run status, report status and item counts together. A website row can contain complete, partial, empty or unavailable sections. Nonempty data and a successful platform run do not prove complete source coverage.

Data scope. The Actor returns website-level research reports and the source-provided entities and measures within the selected pages.

Responsible use. Use the reports for purposes consistent with applicable obligations and the rights attached to the data. Apply suitable access controls when combining research data with your own customer records.

Platform terms. Review the terms governing your source-data use and Apify account before integrating exports into a downstream product or distributing them to others.

Frequently Asked Questions

How can I export Similarweb data as JSON?

Start the Actor with one website and your chosen reports, wait for completion, and export the Dataset as JSON. Download report files referenced by file_url to collect the full delivered output.

Which Similarweb traffic reports can I select?

Choose website_performance, traffic_engagement, marketing_channels, audience, referral or social according to your research question. Each page groups related sections in the website result.

What does one result contain?

One result contains website, the selected report keys, report_context, item_count, processor and processed_at. Inline reports contain section arrays; file-backed reports are linked in report_context. Definitive absence adds status: "not_found".

How are dates selected?

The Actor uses the reporting history available from the source. Competitor sections use up to three available months, while monthly landing-page and ranking tables retain separate monthly periods.

Can I schedule runs to monitor website traffic over time?

Use an Apify schedule with the same website and report selections, then save each completed output with processed_at. Compare like-for-like periods and metrics, since source estimates and available reporting history can change.

How much does a website report cost?

On the FREE tier, one website result with 1-1,000 delivered source items has a $0.034 event subtotal: $0.01 Actor Start + $0.02 Website Result + $0.004 Report Items. See Pricing for larger counts and paid-plan tiers.

Which inputs do I supply for access?

Supply website and reports. Service access is handled by the Actor; an access-related run message can be investigated through support using the run ID.

How should I interpret missing values and partial reports?

Preserve null and absent fields as missing data, preserve genuine zero values, and inspect report_context alongside the saved sections and run status message. complete indicates finished section collection, not exhaustive source coverage; keep observations with different periods and availability separate in analysis.

Why can a successful run save no website row?

Apify's SUCCEEDED state means execution finished. An unknown website, unavailable report or access failure can still leave the Dataset empty. Read the final status message and actual Dataset. A confirmed no-data answer instead saves a not_found row. Both zero-row and not_found runs retain the fixed $0.01 Actor Start charge; they have no Website Result or Report Items charge.

What should I do when billing confirmation is pending?

Keep the existing run ID and inspect its Dataset and charged events before starting another run. A website row may already be saved while billing confirmation is pending. Send the run ID to support; restarting can incur another Actor Start charge.

Support and Community

Ask about website reports, reporting periods and JSON delivery in the AgentX community on Telegram; for a reproducible bug, open an Issue with the run ID and the exact input.

AgentX is an Arcyton brand — arcyton.com.

Last Updated: November 7, 2026