SilentCoreTech

Reliable web scraping with Apify actors

Topic: Data 8 min read Updated

Most scraping projects do not fail on the parsing. They fail on the economics — a job that costs pennies at 100 rows and becomes unaffordable at 100,000, or one that re-collects and re-bills the same unchanged data every morning.

What an actor actually is

On Apify, an actor is a containerised program with a defined input schema and a dataset output. In practice that means three things worth knowing before you pick one:

  • It has a contract. The input schema documents exactly what it accepts; the dataset schema documents the fields you get back. You can read both before running anything.
  • It runs on someone else's infrastructure, with proxy rotation and retry handling already solved — which is most of the work in practice.
  • It is callable from anywhere — API, scheduler, or an integration node in n8n, Make or Zapier.

Pay per result, not per compute

Two pricing models dominate, and the difference matters more than the per-unit rate:

Pay per compute unitPay per result
You are billed forRuntime and memoryRows actually returned
A failed run costsFull priceNothing
A slow target site costsMoreThe same
Cost is predictableOnly after testingBefore you start

For anything you intend to run on a schedule, pay-per-result is the safer default: it makes the bill a function of the value delivered rather than a function of how badly the target site is performing today. Pair it with a hard spend cap so a pathological input cannot produce a pathological invoice.

Delta monitoring: pay once per row

The single largest saving in recurring collection is not scraping faster — it is not re-paying for rows you already have. A monitoring job that checks a hashtag, a job board or a review page every day will find that 90–98% of what it sees is identical to yesterday.

Delta monitoring keeps a fingerprint of what was returned previously and emits only what changed. The practical effect on a daily job:

naive daily run:  1,000 rows × 30 days = 30,000 billed rows
delta monitoring: 1,000 rows day 1
                + ~50 new rows × 29 days ≈ 2,450 billed rows

Same coverage, roughly a twelfth of the cost. When evaluating any recurring scraper, this is the first capability to check for.

Staying on the right side of the rules

Public-data collection is legitimate and widely used, but the boundaries are real. A defensible setup follows a few consistent principles:

  • Public pages only. Nothing behind a login, a paywall or an access control you had to defeat.
  • Respect the site's stated rules — robots directives, rate limits and terms. Slower and allowed beats faster and blocked.
  • Collect what you need, not everything. Narrow field selection reduces both legal exposure and storage cost.
  • Treat personal data carefully. Names and contact details carry obligations under GDPR, PIPEDA and similar regimes regardless of whether the page was public. Have a lawful basis, and honour deletion requests.
  • Do not degrade the source. Rate limiting is not just politeness; hammering a site is what turns a tolerated activity into a blocked one.

This is general information, not legal advice. If your collection touches personal data or a jurisdiction with specific rules, get it reviewed by someone qualified before you scale it.

Wiring output into your stack

A dataset that nobody reads is a cost centre. Three integration patterns cover almost every use case:

  • Scheduled run → webhook → automation tool. The actor runs on a schedule and pushes finished datasets into n8n or Make, where you filter, enrich and route. Best for alerting and CRM enrichment.
  • API pull into a warehouse. Your own job calls the dataset endpoint and loads into Postgres or BigQuery. Best when you need history and joins.
  • Direct export to a sheet. Unglamorous and often correct for one-off research; do not build a pipeline for a question you will ask once.

Judging a scraper before you rely on it

Store listings all claim reliability. These signals are harder to fake:

  • Run success rate published on the actor or the author's profile. Below ~95% on a recurring job means you will be debugging it.
  • A documented output schema rather than "returns JSON".
  • A free tier or free first results — an author confident in the output lets you verify it before paying.
  • Recent updates. Target sites change their markup; a scraper untouched for a year is a scraper that will break.
  • Explicit failure behaviour. What happens on a blocked page — silent gap, or a flagged row? Silent gaps are how bad data enters your warehouse.