Human-Like Website Pageview Traffic Simulator
Send simulated visits to any website, YouTube video, Etsy shop, or Behance profile with human-like scrolling, dwell time, and optional link-following, and get a detailed per-visit metrics log.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
targetUrls | array | optional | Public pages you own or are authorized to test. Legacy startUrls is accepted when this is empty. |
pageviews | integer | optional | Total page loads to attempt, including followed pages. 1-1000. |
pagesPerVisit | integer | optional | Maximum pages in one visit (1-10), subject to the total pageview budget; above 1 attempts same-site link clicks when clicks are enabled. |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
targetUrls | array | optional | Public pages you own or are authorized to test. Legacy startUrls is accepted when this is empty. |
pageviews | integer | optional | Total page loads to attempt, including followed pages. 1-1000. |
pagesPerVisit | integer | optional | Maximum pages in one visit (1-10), subject to the total pageview budget; above 1 attempts same-site link clicks when clicks are enabled. |
visitStyle | string | optional | Human adds dwell, mouse and scroll behaviour. Quick loads the page and leaves without scrolling or clicks. |
dwellSeconds | integer | optional | Target seconds on each page for human visits, varied slightly. Internal clicks may extend the measured time. Ignored by quick style. |
referrerMode | string | optional | Referrer shown to the site: direct, search engine, social network, or a custom URL. |
customReferrer | string | optional | Full http(s) URL used when Referrer is Custom URL. |
scroll | boolean | optional | Scroll each page during human visits. Scroll depth is omitted when scrolling is off or no range is measurable; a very short page with a tiny overflow can report 100. |
clickInternalLinks | boolean | optional | Attempt one visible same-site link per page during human visits. Ads, forms and external links are never clicked. |
deviceMix | string | optional | Device profile for each visit. Mobile and tablet use Android Chromium emulation. |
visitCountry | string | optional | Optional. Route visits through a residential proxy in this country for geo QA. Adds proxy usage. |
blockAds | boolean | optional | Block known ad domains. Analytics requests still load so tag firing can be measured. |
blockImages | boolean | optional | Skip images, fonts and media for faster, cheaper visits. Analytics still loads. |
utmSource | string | optional | Optional utm_source label appended to target URLs, e.g. traffic-test. Recommended to mark test visits. |
Download the published input schema
View complete JSON
{
"description": "Generate real-browser pageviews for your own website with configurable volume, visit depth, dwell, referrer, device mix and per-visit evidence.",
"properties": {
"blockAds": {
"default": true,
"description": "Block known ad domains. Analytics requests still load so tag firing can be measured.",
"prefill": false,
"title": "Block ads",
"type": "boolean"
},
"blockImages": {
"default": false,
"description": "Skip images, fonts and media for faster, cheaper visits. Analytics still loads.",
"prefill": false,
"title": "Block images",
"type": "boolean"
},
"clickInternalLinks": {
"default": true,
"description": "Attempt one visible same-site link per page during human visits. Ads, forms and external links are never clicked.",
"prefill": false,
"title": "Click internal links",
"type": "boolean"
},
"customReferrer": {
"description": "Full http(s) URL used when Referrer is Custom URL.",
"editor": "textfield",
"title": "Custom referrer URL",
"type": "string"
},
"deviceMix": {
"default": "mixed",
"description": "Device profile for each visit. Mobile and tablet use Android Chromium emulation.",
"editor": "select",
"enum": [
"desktop",
"mobile",
"tablet",
"mixed"
],
"enumTitles": [
"Desktop",
"Mobile",
"Tablet",
"Mixed"
],
"prefill": "desktop",
"title": "Device mix",
"type": "string"
},
"dwellSeconds": {
"default": 20,
"description": "Target seconds on each page for human visits, varied slightly. Internal clicks may extend the measured time. Ignored by quick style.",
"maximum": 300,
"minimum": 1,
"prefill": 1,
"title": "Dwell (seconds)",
"type": "integer"
},
"pagesPerVisit": {
"default": 1,
"description": "Maximum pages in one visit (1-10), subject to the total pageview budget; above 1 attempts same-site link clicks when clicks are enabled.",
"maximum": 10,
"minimum": 1,
"prefill": 1,
"title": "Pages per visit",
"type": "integer"
},
"pageviews": {
"default": 10,
"description": "Total page loads to attempt, including followed pages. 1-1000.",
"maximum": 1000,
"minimum": 1,
"prefill": 1,
"title": "Pageviews",
"type": "integer"
},
"referrerMode": {
"default": "direct",
"description": "Referrer shown to the site: direct, search engine, social network, or a custom URL.",
"editor": "select",
"enum": [
"direct",
"search",
"social",
"custom"
],
"enumTitles": [
"Direct (no referrer)",
"Search engine",
"Social network",
"Custom URL"
],
"prefill": "direct",
"title": "Referrer",
"type": "string"
},
"scroll": {
"default": true,
"description": "Scroll each page during human visits. Scroll depth is omitted when scrolling is off or no range is measurable; a very short page with a tiny overflow can report 100.",
"prefill": false,
"title": "Scroll pages",
"type": "boolean"
},
"targetUrls": {
"description": "Public pages you own or are authorized to test. Legacy startUrls is accepted when this is empty.",
"editor": "requestListSources",
"prefill": [
{
"url": "https://example.com"
}
],
"title": "Target URLs",
"type": "array"
},
"utmSource": {
"description": "Optional utm_source label appended to target URLs, e.g. traffic-test. Recommended to mark test visits.",
"editor": "textfield",
"title": "Test-source tag (utm_source)",
"type": "string"
},
"visitCountry": {
"default": "none",
"description": "Optional. Route visits through a residential proxy in this country for geo QA. Adds proxy usage.",
"editor": "select",
"enum": [
"none",
"AD",
"AE",
"AF",
"AG",
"AI",
"AL",
"AM",
"AO",
"AQ",
"AR",
"AS",
"AT",
"AU",
"AW",
"AX",
"AZ",
"BA",
"BB",
"BD",
"BE",
"BF",
"BG",
"BH",
"BI",
"BJ",
"BL",
"BM",
"BN",
"BO",
"BQ",
"BR",
"BS",
"BT",
"BV",
"BW",
"BY",
"BZ",
"CA",
"CC",
"CD",
"CF",
"CG",
"CH",
"CI",
"CK",
"CL",
"CM",
"CN",
"CO",
"CR",
"CU",
"CV",
"CW",
"CX",
"CY",
"CZ",
"DE",
"DJ",
"DK",
"DM",
"DO",
"DZ",
"EC",
"EE",
"EG",
"EH",
"ER",
"ES",
"ET",
"FI",
"FJ",
"FK",
"FM",
"FO",
"FR",
"GA",
"GB",
"GD",
"GE",
"GF",
"GG",
"GH",
"GI",
"GL",
"GM",
"GN",
"GP",
"GQ",
"GR",
"GS",
"GT",
"GU",
"GW",
"GY",
"HK",
"HM",
"HN",
"HR",
"HT",
"HU",
"ID",
"IE",
"IL",
"IM",
"IN",
"IO",
"IQ",
"IR",
"IS",
"IT",
"JE",
"JM",
"JO",
"JP",
"KE",
"KG",
"KH",
"KI",
"KM",
"KN",
"KP",
"KR",
"KW",
"KY",
"KZ",
"LA",
"LB",
"LC",
"LI",
"LK",
"LR",
"LS",
"LT",
"LU",
"LV",
"LY",
"MA",
"MC",
"MD",
"ME",
"MF",
"MG",
"MH",
"MK",
"ML",
"MM",
"MN",
"MO",
"MP",
"MQ",
"MR",
"MS",
"MT",
"MU",
"MV",
"MW",
"MX",
"MY",
"MZ",
"NA",
"NC",
"NE",
"NF",
"NG",
"NI",
"NL",
"NO",
"NP",
"NR",
"NU",
"NZ",
"OM",
"PA",
"PE",
"PF",
"PG",
"PH",
"PK",
"PL",
"PM",
"PN",
"PR",
"PS",
"PT",
"PW",
"PY",
"QA",
"RE",
"RO",
"RS",
"RU",
"RW",
"SA",
"SB",
"SC",
"SD",
"SE",
"SG",
"SH",
"SI",
"SJ",
"SK",
"SL",
"SM",
"SN",
"SO",
"SR",
"SS",
"ST",
"SV",
"SX",
"SY",
"SZ",
"TC",
"TD",
"TF",
"TG",
"TH",
"TJ",
"TK",
"TL",
"TM",
"TN",
"TO",
"TR",
"TT",
"TV",
"TW",
"TZ",
"UA",
"UG",
"UM",
"US",
"UY",
"UZ",
"VA",
"VC",
"VE",
"VG",
"VI",
"VN",
"VU",
"WF",
"WS",
"YE",
"YT",
"ZA",
"ZM",
"ZW"
],
"enumTitles": [
"No country (direct)",
"Andorra",
"United Arab Emirates",
"Afghanistan",
"Antigua and Barbuda",
"Anguilla",
"Albania",
"Armenia",
"Angola",
"Antarctica",
"Argentina",
"American Samoa",
"Austria",
"Australia",
"Aruba",
"Åland Islands",
"Azerbaijan",
"Bosnia and Herzegovina",
"Barbados",
"Bangladesh",
"Belgium",
"Burkina Faso",
"Bulgaria",
"Bahrain",
"Burundi",
"Benin",
"Saint Barthélemy",
"Bermuda",
"Brunei Darussalam",
"Bolivia, Plurinational State of",
"Bonaire, Sint Eustatius and Saba",
"Brazil",
"Bahamas",
"Bhutan",
"Bouvet Island",
"Botswana",
"Belarus",
"Belize",
"Canada",
"Cocos (Keeling) Islands",
"Congo, The Democratic Republic of the",
"Central African Republic",
"Congo",
"Switzerland",
"Côte d'Ivoire",
"Cook Islands",
"Chile",
"Cameroon",
"China",
"Colombia",
"Costa Rica",
"Cuba",
"Cabo Verde",
"Curaçao",
"Christmas Island",
"Cyprus",
"Czechia",
"Germany",
"Djibouti",
"Denmark",
"Dominica",
"Dominican Republic",
"Algeria",
"Ecuador",
"Estonia",
"Egypt",
"Western Sahara",
"Eritrea",
"Spain",
"Ethiopia",
"Finland",
"Fiji",
"Falkland Islands (Malvinas)",
"Micronesia, Federated States of",
"Faroe Islands",
"France",
"Gabon",
"United Kingdom",
"Grenada",
"Georgia",
"French Guiana",
"Guernsey",
"Ghana",
"Gibraltar",
"Greenland",
"Gambia",
"Guinea",
"Guadeloupe",
"Equatorial Guinea",
"Greece",
"South Georgia and the South Sandwich Islands",
"Guatemala",
"Guam",
"Guinea-Bissau",
"Guyana",
"Hong Kong",
"Heard Island and McDonald Islands",
"Honduras",
"Croatia",
"Haiti",
"Hungary",
"Indonesia",
"Ireland",
"Israel",
"Isle of Man",
"India",
"British Indian Ocean Territory",
"Iraq",
"Iran, Islamic Republic of",
"Iceland",
"Italy",
"Jersey",
"Jamaica",
"Jordan",
"Japan",
"Kenya",
"Kyrgyzstan",
"Cambodia",
"Kiribati",
"Comoros",
"Saint Kitts and Nevis",
"Korea, Democratic People's Republic of",
"Korea, Republic of",
"Kuwait",
"Cayman Islands",
"Kazakhstan",
"Lao People's Democratic Republic",
"Lebanon",
"Saint Lucia",
"Liechtenstein",
"Sri Lanka",
"Liberia",
"Lesotho",
"Lithuania",
"Luxembourg",
"Latvia",
"Libya",
"Morocco",
"Monaco",
"Moldova, Republic of",
"Montenegro",
"Saint Martin (French part)",
"Madagascar",
"Marshall Islands",
"North Macedonia",
"Mali",
"Myanmar",
"Mongolia",
"Macao",
"Northern Mariana Islands",
"Martinique",
"Mauritania",
"Montserrat",
"Malta",
"Mauritius",
"Maldives",
"Malawi",
"Mexico",
"Malaysia",
"Mozambique",
"Namibia",
"New Caledonia",
"Niger",
"Norfolk Island",
"Nigeria",
"Nicaragua",
"Netherlands",
"Norway",
"Nepal",
"Nauru",
"Niue",
"New Zealand",
"Oman",
"Panama",
"Peru",
"French Polynesia",
"Papua New Guinea",
"Philippines",
"Pakistan",
"Poland",
"Saint Pierre and Miquelon",
"Pitcairn",
"Puerto Rico",
"Palestine, State of",
"Portugal",
"Palau",
"Paraguay",
"Qatar",
"Réunion",
"Romania",
"Serbia",
"Russian Federation",
"Rwanda",
"Saudi Arabia",
"Solomon Islands",
"Seychelles",
"Sudan",
"Sweden",
"Singapore",
"Saint Helena, Ascension and Tristan da Cunha",
"Slovenia",
"Svalbard and Jan Mayen",
"Slovakia",
"Sierra Leone",
"San Marino",
"Senegal",
"Somalia",
"Suriname",
"South Sudan",
"Sao Tome and Principe",
"El Salvador",
"Sint Maarten (Dutch part)",
"Syrian Arab Republic",
"Eswatini",
"Turks and Caicos Islands",
"Chad",
"French Southern Territories",
"Togo",
"Thailand",
"Tajikistan",
"Tokelau",
"Timor-Leste",
"Turkmenistan",
"Tunisia",
"Tonga",
"Türkiye",
"Trinidad and Tobago",
"Tuvalu",
"Taiwan, Province of China",
"Tanzania, United Republic of",
"Ukraine",
"Uganda",
"United States Minor Outlying Islands",
"United States",
"Uruguay",
"Uzbekistan",
"Holy See (Vatican City State)",
"Saint Vincent and the Grenadines",
"Venezuela, Bolivarian Republic of",
"Virgin Islands, British",
"Virgin Islands, U.S.",
"Viet Nam",
"Vanuatu",
"Wallis and Futuna",
"Samoa",
"Yemen",
"Mayotte",
"South Africa",
"Zambia",
"Zimbabwe"
],
"prefill": "none",
"title": "Visit country (optional)",
"type": "string"
},
"visitStyle": {
"default": "human",
"description": "Human adds dwell, mouse and scroll behaviour. Quick loads the page and leaves without scrolling or clicks.",
"editor": "select",
"enum": [
"human",
"quick"
],
"enumTitles": [
"Human-like visit",
"Quick load check"
],
"prefill": "quick",
"title": "Visit style",
"type": "string"
}
},
"schemaVersion": 1,
"title": "Traffic Generator Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
visits | string | optional | Dataset containing every attempted pageview with its measured status and timing. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "Per-pageview records from real Chromium visits: status, timing, device, referrer, analytics tags and errors.",
"properties": {
"visits": {
"description": "Dataset containing every attempted pageview with its measured status and timing.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Page Visits",
"type": "string"
}
},
"title": "Human-Like Website Pageview Traffic Simulator Output"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"views": {
"overview": {
"display": {
"component": "table",
"properties": {
"analyticsTags": {
"format": "text",
"label": "analyticsTags"
},
"device": {
"format": "text",
"label": "device"
},
"errorCode": {
"format": "text",
"label": "errorCode"
},
"finalUrl": {
"format": "link",
"label": "Final URL"
},
"linksFollowed": {
"format": "number",
"label": "Followed"
},
"linksFound": {
"format": "number",
"label": "Links"
},
"loadTimeMs": {
"format": "number",
"label": "Load (ms)"
},
"pageTitle": {
"format": "text",
"label": "Page Title"
},
"referrer": {
"format": "text",
"label": "referrer"
},
"scrollDepthPercent": {
"format": "number",
"label": "Scroll %"
},
"status": {
"format": "text",
"label": "Status"
},
"statusCode": {
"format": "number",
"label": "statusCode"
},
"timeOnPageSec": {
"format": "number",
"label": "Time (s)"
},
"timestamp": {
"format": "text",
"label": "Timestamp"
},
"url": {
"format": "link",
"label": "URL"
}
}
},
"title": "Page Visits",
"transformation": {
"fields": [
"url",
"finalUrl",
"status",
"statusCode",
"pageTitle",
"loadTimeMs",
"timeOnPageSec",
"scrollDepthPercent",
"linksFound",
"linksFollowed",
"device",
"referrer",
"analyticsTags",
"errorCode",
"timestamp"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
Human-Like Website Pageview Traffic Simulator
Send real Chromium pageviews to a website you own or are authorized to test. Choose how many pages to load, how deep each visit goes, how long it stays, whether it scrolls or follows internal links, which device and country it appears from, and which referrer it reports. Every attempt is written as a dataset row with its measured status, timing, device, referrer, analytics requests and error. A run-level summary is checkpointed while the run progresses, and a graceful stop writes an aborted row for an in-flight page.
This is a testing and monitoring tool. It does not solve CAPTCHAs, click ads, inflate YouTube views, or promise that the visits will appear in Google Analytics or improve rankings. Use it on your own sites or sites you have permission to test.
What this actor does
- Real browser visits: each page loads in Chromium with JavaScript, cookies, redirects and lazy content working normally.
- Pageview volume: request 1–1,000 pageviews; each visit gets its own browser context, cookies and device profile.
- Session depth: attempt to follow one visible same-site link per page, up to 10 pages per visit. A visit can stay on one page when no link is followed or the global pageview budget is used.
- Human behaviour: a jittered dwell target, mouse movement, measured scroll depth and optional internal clicks. A failed click attempt can extend the measured time on a page.
- Device, referrer and geo controls: desktop, Android mobile, Android tablet or a mixed run; direct, search, social or custom referrer; optional residential country for geo QA.
- Evidence, not claims: per-page HTTP status, final URL, load time, actual dwell, actual scroll, links followed, analytics requests observed and a clear error code. A
SUMMARYrecord is written to the key-value store and checkpointed during the run.
Output per pageview
url— the target URL you asked for (before redirects or UTM tagging)finalUrl— the final URL after redirectsstatus—success,failed,blocked,timeoutorabortedstatusCode— HTTP response statuspageTitle— HTML title, omitted for non-HTML pagesloadTimeMs— time until the DOM was readytimeOnPageSec— actual time spent on the page after loading, including click attemptsscrollDepthPercent— measured scroll depth, omitted when scrolling is off or no range is measurable; a very short page with a tiny overflow can report 100linksFound— same-site links present in the page, not only visible oneslinksFollowed— internal links followed from this pagereferrer— the actualdocument.referrerseen by the pageuserAgent,viewport,device— the browser profile usedvisitId,pageviewIndex,pageIndex— traceability for sessions and loopsanalyticsTags— analytics requests observed, e.g.ga4,gtm,meta_pixel,hotjar(not proof that the platform accepted a hit)errorCode,error— a short code and message for failed, blocked or timed-out pagestimestamp— ISO-8601 UTC time the page attempt started
Empty or unmeasured fields are omitted, not filled with empty strings or fake zeros. A successful page has no errorCode. A graceful stop writes aborted for pages that have not yet emitted a row; a hard kill can still omit an in-flight row, while pages already written stay success.
A SUMMARY record contains requested/attempted pageviews, success/failed/blocked/timeout/aborted counts, error rate, median and p95 load time, median dwell, analytics-request rates and per-target counts. It is checkpointed during the run, so a stopped run still has the latest version.
Input
| Field | Type | Default | Description |
|---|---|---|---|
targetUrls |
array | – | Public pages you own or are authorized to test (the prefill uses https://example.com); legacy startUrls is accepted in code |
pageviews |
integer | 10 |
Total page loads to attempt (1–1,000) |
pagesPerVisit |
integer | 1 |
Maximum pages in one visit (1–10); above 1 attempts same-site link clicks when clicks are enabled and the global pageview budget allows |
visitStyle |
string | human |
human for dwell/scroll/click, quick for a fast load check |
dwellSeconds |
integer | 20 |
Target seconds per page for human visits (1–300) |
referrerMode |
string | direct |
direct, search, social or custom |
customReferrer |
string | – | Full http(s) URL used when referrerMode is custom |
scroll |
boolean | true |
Scroll during human visits; measured depth is omitted if not measurable |
clickInternalLinks |
boolean | true |
Attempt one visible same-site link per page; never ads, forms or external links |
deviceMix |
string | mixed |
desktop, mobile, tablet or mixed (Android Chromium emulation for mobile/tablet) |
visitCountry |
string | none |
Optional ISO country for residential-proxy geo QA; none keeps visits direct |
blockAds |
boolean | true |
Block ad domains; analytics requests still load so tag firing can be measured |
blockImages |
boolean | false |
Skip images, fonts and media for faster visits |
utmSource |
string | – | Optional utm_source label appended to target URLs, e.g. traffic-test |
Example: load check on your own site
{
"targetUrls": [
{ "url": "https://www.example.com/" },
{ "url": "https://www.example.com/pricing" }
],
"pageviews": 20,
"pagesPerVisit": 1,
"visitStyle": "human",
"dwellSeconds": 15,
"deviceMix": "mixed",
"referrerMode": "direct"
}
Example: analytics-tag QA with a test-source label
{
"targetUrls": [{ "url": "https://www.example.com/" }],
"pageviews": 10,
"pagesPerVisit": 2,
"visitStyle": "human",
"dwellSeconds": 25,
"scroll": true,
"clickInternalLinks": true,
"referrerMode": "search",
"utmSource": "traffic-test",
"blockAds": true
}
Use the analyticsTags field and the SUMMARY rates to confirm which analytics requests the page made. Test traffic may still be filtered by an analytics platform; this actor does not guarantee attribution.
Example: mobile and geo QA
{
"targetUrls": [{ "url": "https://www.example.com/" }],
"pageviews": 12,
"pagesPerVisit": 1,
"visitStyle": "human",
"dwellSeconds": 10,
"deviceMix": "mobile",
"visitCountry": "DE",
"referrerMode": "social"
}
Country visits use a residential proxy in that country. If the proxy is unavailable, the page is reported as failed instead of silently falling back to a direct request.
Example: quick smoke test
{
"targetUrls": [
{ "url": "https://www.example.com/" },
{ "url": "https://www.example.com/health" }
],
"pageviews": 2,
"visitStyle": "quick",
"blockAds": true,
"blockImages": true
}
Use cases
- Load and cache warm-up — load key pages after a deploy with a realistic browser and short dwell.
- Analytics and tag QA — check whether GA4, GTM, Meta Pixel, Hotjar or other tags actually send data on each page.
- Mobile checks — load pages with Android mobile or tablet profiles and compare status, title and timing.
- Geo checks — request visits through a residential country to test redirects, consent banners, prices or language.
- Uptime and broken-link checks — schedule a small run and watch for
failed,blocked,timeoutor non-2xx statuses.
FAQ
Do I need a proxy?
No, for new inputs. Visits are direct by default. Set visitCountry only when you need a residential exit in a specific country for geo testing; that option adds proxy usage. Old saved inputs that still contain proxyConfiguration can also create a proxy; if no group is set, the account's residential group is used and billed. Remove that legacy key for direct visits.
Will these visits show up in Google Analytics or other analytics tools?
Not necessarily. The actor loads the page in a real browser and records which analytics requests fired, but analytics platforms filter automated traffic and may exclude the visits. Use this actor to test whether tags work, not to inflate audience numbers.
Why did a page report blocked?
The site answered with 401, 403 or 429, or served a recognizable bot-challenge page. A 403 is reported as blocked, a 404 as failed with errorCode=not_found, and 5xx as failed with errorCode=server_error; the HTTP status is retained even when the body is empty. The actor does not solve CAPTCHAs and does not try to bypass the block. Change the target, test a staging URL, or use a country proxy where appropriate.
Why is scrollDepthPercent missing on some successful pages?
The page had no measurable scrollable range, scrolling was turned off, or the depth could not be measured. A page with no range is never forced to 100%, but a very short page with a few pixels of overflow can still report 100% because a wheel step reaches its bottom.
Why is the actual dwell or page count different from what I set?
dwellSeconds is a target, not a hard wall. Waiting for an internal click to navigate can make the measured timeOnPageSec longer, and pagesPerVisit is a maximum: the run's total pageview budget can end a visit before it reaches that maximum. Both the actual dwell and the actual pages are recorded per visit.
Does it click ads or inflate YouTube views?
No. It only attempts visible same-site links; ad elements, forms and external links are skipped. YouTube URLs are treated as ordinary pages, and the actor does not generate views.
What happens if the run is stopped early?
Rows already written stay in the dataset. A graceful stop writes aborted rows for in-flight visits, writes the latest SUMMARY, and sets a partial status such as Stopped 3/20. A hard kill can still omit the in-flight row, but the summary is checkpointed after each page.
Are my saved inputs from the old version still supported?
Yes. An input with only startUrls is accepted and mapped to targetUrls. Legacy waitOnPage, mode=STRESS, enableCrawling/maxPagesPerUrl, enableAdvancedFingerprinting, crawlingLinkSelector and blockResources are applied in code, including when the platform supplies the new defaults. endAfterSeconds and YouTube mode are ignored with a warning; the run stops after the requested pageviews.
Is this affiliated with the websites I test?
No. It is an independent browser automation tool. Use it only on sites you own or have permission to test, and follow their terms and your local laws.
Limitations
- No login, basic-auth, form submission or file upload.
- No CAPTCHA solving or guarantee of bypassing bot protection.
- No ad clicks, ad impressions or YouTube view generation.
- Mobile and tablet profiles use Android Chromium emulation, not iOS Safari.
- Direct visits come from the actor's network; some sites will block them. Country visits depend on residential proxy availability.
- Analytics platforms may filter automated traffic;
analyticsTagsrecords requests the page made, not hits the platform accepted. - Target URLs and redirect destinations are checked against the private/loopback guard before navigation.
- A hard kill can omit the in-flight page row; graceful stops write
abortedand a checkpointed summary. - The actor does not claim to improve SEO rankings or audience metrics.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build tRkcimJNhPyGnTgpe. Documentation is regenerated from the default published build; private drafts are not included.