Similarweb Pro Scraper
Pricing
from $0.015 / website result
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
Maintained by CommunityActor stats
2
Bookmarked
113
Total users
41
Monthly active users
4 hours ago
Last modified
Categories
Security
Limited permissionsShare
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.
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_startandperiod_endfor 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.
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
website | string | Yes | One public domain or website URL; a leading www. is removed from the normalized domain. | apify.com |
reports | array of strings | Yes | One 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 key | Content |
|---|---|
website_performance | Profile, engagement, devices, rankings, traffic trend, visits, geography and channels. |
similar_sites | Similar-site candidates. |
traffic_engagement | Engagement, device metrics, rankings, traffic trends, new and returning users, and visit totals. |
marketing_channels | Marketing sources, channel shares, trends and changes. |
audience | Geography, demographics, interests and age/gender audience sections. |
search_overview | Search traffic, volume, brand split and keyword distribution. |
referral | Referring and outgoing websites, plus referral trends. |
advertiser_overview | Advertising metrics, counts and graph observations. |
publisher_overview | Publisher metrics, advertisers and totals. |
social | Social sources and trends. |
seo_overview | Search summaries, trends, SERP features and ranking trends. |
keywords | Organic keywords and keyword summary selections. |
keyword_clusters | Keyword topic clusters. |
landing_pages | Organic landing-page snapshots by available month. |
search_competitors | Search competitors and overlap measures. |
ranking_distribution | Ranking trends and US keyword/position tables. |
ai_traffic | AI assistant contributions and AI landing pages. |
paid_keywords | Paid keywords and paid-search summary selections. |
paid_landing_pages | Paid landing-page snapshots and summary measures. |
search_ads | Text search ads and search campaigns. |
display_campaigns | Display campaign records. |
display_ads | Display creative records. |
display_publishers | Display publishers and reach. |
advertiser_activity | Advertising channels, trends and geography. |
backlinks_overview | Backlink summary, trend and changes. |
referring_domains | Referring-domain records. |
backlinks | Individual 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 field | Type | Description |
|---|---|---|
website | string | Website identified by the source, or the requested domain for a definitive not_found result. |
Selected report keys, such as traffic_engagement, social and display_campaigns | object | Each inline object maps section names to record arrays. A null report may be file-backed or unavailable; inspect its context. |
report_context | object | Per-report storage, file link, item count, and section statuses, counts and periods. |
item_count | integer | Distinct delivered source-section items, counted once when reports overlap; used for report-item billing. It can differ from the number of displayed records. |
status | string, when present | not_found identifies definitive source absence; this row has no Website Result or Report Items charge. |
processor | string | Apify actor URL that processed this record. |
processed_at | string | UTC 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 field | Description |
|---|---|
monthly_visits | Source estimated monthly website visits; profile and engagement may use different source models. |
visit_duration | Average visit duration in seconds. |
visit_pages | Average pages per visit. |
spend | Source estimated advertising spend; interpret the source unit without assuming a currency. |
cpc | Source estimated cost per click; interpret the source unit without assuming a currency. |
parent_entity | Source parent domain or advertising entity of a group member. |
site_metrics | Source 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 field | Type | Meaning |
|---|---|---|
active_days | number | Active day count. |
active_months | array | Active months. |
ad_count | number | Advertisement count. |
ad_id | number / string | Source record identifier. |
ad_type | string | Advertisement type. |
affinity | JSON value / number | Website affinity score. |
anchor_text | string | Source backlink anchor text. |
assistant_shares | array / boolean / number / object / string | Source traffic shares by AI assistant. |
assistant_split | array / boolean / number / object / string | AI-assistant split in the source representation. |
assistant_visits | object | Source visit counts by AI assistant. |
average_volume | number | Average search volume. |
backlink_count | number | Backlink count. |
bounce_rate | number | Bounce rate. |
campaign_id | number / string | Source record identifier. |
category | JSON value / string | Category. |
category_rank | integer / number / string | Category rank. |
change | JSON value / number | Monthly click change; traffic change; visit change. Retains the source scale and period. |
change_state | string | Source click-change label, such as New, Lost, Positive, Negative, NoChange or NoData. |
channel | JSON value | Marketing channel. |
clicks | number | Click count. |
clicks_change | number | Click change. Retains the source scale and period. |
clicks_trend | array / boolean / number / object / string | Source click observations indexed by date or source label. |
competition | number | Keyword competition. |
country_id | number / string | Source country identifier; not necessarily an ISO code. |
country_rank | integer / number / string | Country rank. |
cpc | number | Estimated cost per click; currency is not inferred. |
cpc_high | number | High-bid cost-per-click estimate; currency is not inferred. |
cpc_low | number | Low-bid cost-per-click estimate; currency is not inferred. |
creative_count | number | Creative count. |
creative_id | number / string | Source record identifier. |
creative_type | string | Creative type. |
date | string | Source observation date or date label; no timezone is inferred. |
dedup_users | number | Average monthly deduplicated user count. |
description | JSON value / string | Description. |
desktop_clicks | number | Desktop click count. |
destination_url | string | Source advertisement destination. |
difficulty | number | Keyword difficulty. |
domain | JSON value / string | Source domain. |
domain_authority | number | Domain authority score. |
domain_score | number | Domain score. |
employees | JSON value | Source employee-count range as text. |
engagement_score | number | Engagement score. |
filtered_share | number | Filtered traffic share. Retains the source scale and period. |
first_seen | string | Source first-seen date or date/time label; no timezone is inferred. |
follow_pages | number | Follow referring page count. |
founded | string | Source founding year, represented as text. |
global_rank | JSON value / integer / number / string | Global rank. |
has_adsense | JSON value / boolean | Has ad sense. |
image_size | string | Source creative image dimensions as text. |
image_url | string | Source image link; no separate image download is promised. |
impressions | number | Impression count. |
impressions_change | number | Impression change. Retains the source scale and period. |
impressions_new | boolean | Has new impressions. |
impressions_share | number | Impression share. Retains the source scale and period. |
industry | JSON value | Source industry taxonomy, with identifiers and category paths. |
is_broken | boolean | Is broken. |
is_image | boolean | Is image. |
is_lost | boolean | Is lost. |
is_new | JSON value / boolean | Is new. |
is_subdomain | boolean | Is subdomain. |
keyword | string | Keyword. |
keyword_count | number | Keyword count. |
keyword_overlap | array / boolean / number / object / string | Keyword overlap. |
large_image_url | string | Larger source image link, when supplied. |
last_seen | string | Source last-seen date or date/time label; no timezone is inferred. |
lost_backlinks | number | Lost backlink count. |
lost_domains | number | Lost referring domain count. |
monthly_visits | number | Estimated monthly visits. Profile snapshots and engagement averages use separate source models. |
name | JSON value / string | Title. |
network | string | Social network. |
new_backlinks | number | New backlink count. |
new_domains | number | New referring domain count. |
nofollow_pages | number | No follow referring page count. |
organic_clicks | number | Organic click count. |
organic_share | number | Organic click share. Retains the source scale and period. |
overlap | JSON value | Same day cross visitation rate. |
overlap_change | JSON value | Cross visitation change. Retains the source scale and period. |
page_score | number | Page score. |
page_url | string | Source landing-page URL. |
page_views | number | Average monthly page view count. |
parent_domain | string | Parent domain. |
position | number | Search position. |
previous_clicks | number | Previous click count. |
previous_position | number | Previous search position. |
previous_share | number | Previous click share. Retains the source scale and period. |
primary_intent | string | Primary search intent. |
publisher_count | number | Publisher count. |
rank | number | Backlink rank. |
referring_domains | number | Referring domain count. |
referring_pages | number | Referring page count. |
referring_url | string | Source page containing the backlink. |
related_apps | JSON value / object | Applications grouped by store; groups contain app records or source store values. |
relevancy_rank | JSON value | Audience relevance rank. |
relevancy_score | JSON value | Audience relevance score. |
search_volume | number | Search volume. |
secondary_intent | string | Secondary search intent. |
serp_date | string | Source search-results observation date or label. |
serp_features | array | Search features. |
serp_type | string | Search feature. |
share_split | array / boolean / number / object / string | Share split in the source representation. |
share_trend | array / boolean / number / object / string | Source share observations indexed by date or source label. |
site_metrics | array / object | Per-website keyword observations, including clicks, shares, search features and destination pages. |
site_shares | JSON value / array / boolean / number / object / string | Source per-website shares, keyed by website. |
spend | number | Estimated advertising spend; currency is not inferred. |
spend_change | number | Advertising spend change. Retains the source scale and period. |
spend_new | boolean | Has new spend. |
spend_share | number | Advertising spend share. Retains the source scale and period. |
tags | JSON value | Tags. |
title | JSON value / string | Title. |
top_country | JSON value / number / string | Source identifier of the highest-traffic country. |
top_keyword | string | Top keyword. |
top_url | string | Top page URL. |
topic_id | number / string | Source record identifier. |
total_share | JSON value / number | Total traffic share. Retains the source scale and period. |
total_traffic | array / boolean / number / object / string | Total traffic. |
traffic | array / boolean / number / object / string | Traffic. |
traffic_share | JSON value / number | Advertising visit share; click share; traffic share; traffic source visit share; visit share. Retains the source scale and period. |
unique_users | number | Average monthly unique user count. |
url_count | number | Url count. |
users_share | number | User share. Retains the source scale and period. |
video_url | string | Source video link, when supplied; no video download is promised. |
visit_duration | number | Average visit duration, in seconds. |
visit_frequency | number | Visits per user. |
visit_pages | number | Average pages per visit. |
visits | JSON value / number / string | Visit count. |
visits_change | number | Advertising visit change. Retains the source scale and period. |
visits_new | boolean | Has new visits. |
visits_trend | array / boolean / number / object / string | Source visit observations indexed by date or source label. |
volume_state | string | Source search-volume change label. |
zero_share | number | Zero click rate. Retains the source scale and period. |
metric | string | Source numeric-measure name; interpret with its section and dimensions. |
dimensions | array | Labels aligned to the numeric observation or series. |
value | number | Source numeric observation; the unit follows its metric. |
series_values | array / object | Source numeric series; preserve its labels and scale. |
total_count | number | Source aggregate count for this section, separate from delivered website rows. |
source_facets | object / array | Source facet labels, identifiers and counts. |
top_source_facets | object / array | Source leading facet labels, identifiers and counts. |
source_segments | object / array | Source segment definitions or counts. |
categories | array | Category counts; nested entries may contain category, count, id and categories. |
entity_scope | string | Whether the record is a source group or a member. |
parent_entity | string | Parent website or advertising entity for a member record. |
page_group | JSON value | Source AI landing-page group. |
landing_id | string / number | Source landing-page identifier. |
display_path | string | Source ad display path when no destination URL is available. |
period_start | string | Start of this record's source reporting period. |
period_end | string | End 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 field | Type | Meaning |
|---|---|---|
site_metrics.*.site | string | Website associated with a keyword observation. |
site_metrics.*.value | number | Source click count for that website. |
site_metrics.*.share, previous_share | number | Current and comparison traffic shares at the source scale. |
site_metrics.*.serp_features | array | Source search-result feature labels. |
site_metrics.*.top_url | string | Source leading destination page. |
industry.id | string, number | Source taxonomy identifier. |
industry.path | array | Source category hierarchy. |
related_apps.<store>.*.store | string or number | Source application-store identifier. |
related_apps.<store>.*.id | string or number | Source application identifier. |
related_apps.<store>.*.title, author | string | Application title and source publisher name. |
related_apps.<store>.*.icon | string | Source application image link. |
related_apps.<store>.*.category | string | Source application category. |
related_apps.<store>.*.price | string, number | Source price text or value; currency is not inferred. |
related_apps.<store>.*.rating, ratecount | number | Source rating and review count. |
categories.*.category | string | Source category label. |
categories.*.count | number | Source count for that category. |
categories.*.id | string, number | Source category identifier. |
categories.*.categories | array | Child 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 pipefailexport 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" >&2while true; doSTATE=$(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" inSUCCEEDED|FAILED|TIMED-OUT|ABORTED) break ;;esacsleep 2doneprintf 'Run status: %s\n' "$STATUS" >&2OFFSET=0while true; doPAGE=$(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 ] && breakOFFSET=$((OFFSET + COUNT))done
Python
Uses Python's standard library. Save the run ID if the client stops waiting, then resume polling that run.
import jsonimport osimport timefrom urllib.request import Request, urlopenAPI = "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 = 0while 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:breakoffset += 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.
| Event | FREE | BRONZE | SILVER | GOLD / 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 outcome | Actor Start | Website Result | Report Items units | Actor bill |
|---|---|---|---|---|
| Quick Start: 1 website, 217 source items | 1 | 1 | 1 | $0.034 |
| 1 website, 6,025 source items | 1 | 1 | 7 | $0.058 |
| Partial website result, 500 source items retained | 1 | 1 | 1 | $0.034 |
1 confirmed not_found row | 1 | 0 | 0 | $0.01 |
| 0 saved rows | 1 | 0 | 0 | $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.
| Option | Useful fit |
|---|---|
| Similarweb website interface | Interactive exploration, chart review and source-provided analysis tools. |
| Similarweb's official API | Direct source integration with documented endpoint contracts and account credit controls. |
| SEO research suites | Combined research, project management and analyst workflows within one product. |
| Similarweb Pro Scraper | Selected 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_urland 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_contextand 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.
Legal and Compliance
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.
Related AgentX Actors
- Domain Intelligence Lookup — use the returned website for domain registration and infrastructure research.
- Google Keyword Trends — compare search-interest patterns for topics identified in website research.
- All Web Search Scraper — find public pages for deeper website and company research.
- LinkedIn Company Lookup — add a public company profile when you have its LinkedIn company URL.
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