How-to 10 min Beginner News

How to schedule an Apify scraper for a daily digest

A one-off run is a demo. A schedule is the product: the same input, every weekday, dataset waiting when you open Slack. This is the Apify-native way — no cron on your laptop.

1 Get one successful manual run first

Schedules replay the input you save. If a manual run fails (bad query, missing required field, blocked source), the schedule will fail the same way at 07:00. Open the Actor, run it once, and only continue when the Dataset has rows and the run status is SUCCEEDED.

2 Create the schedule on the Actor

Actor page → Schedules → Create schedule. Give it a name you will recognise in six months (“Naukri / Bengaluru / PM jobs / weekdays”). Set timezone explicitly — cron 0 7 * * 1-5 is 07:00 in that zone, not UTC, if you picked London or Shanghai.

Paste the JSON input from your successful run. Do not leave maxItems at a “see what happens” 5,000 unless you have looked at the per-1k price. A digest is usually 50–200 rows.

3 Hook the result to somewhere a human looks

A dataset sitting in Apify is not a digest. Add an integration on success: Google Sheets (append), a Slack incoming webhook, or your own HTTPS endpoint. Apify can POST the run payload; your job is to fetch {{resource.defaultDatasetId}} and format it.

For Slack, a short Make/Zapier scenario — “Watch Actor runs” → “Get dataset items” → “Send channel message” — is enough. For Sheets, use the Google Sheets Actor as in the Google News how-to.

4 Watch the 30-day success rate, not just the first week

EasyAPI tool pages show a 30-day Apify success rate and last build date. If a source layout changes, runs start failing. Set an email or Slack notification on failed runs (Actor → Notifications) so you notice before the digest goes quiet.

Watch-outs

Things that usually go wrong

  • Unnamed datasets expire

    The default dataset on a run is unnamed and is kept for 7 days. If you need history, export it (Sheets, S3, a named dataset) during the run — do not rely on opening last month’s run later.

  • Schedules are per Actor, not per website

    One schedule = one input. Five keywords means five schedules (or one Actor that accepts a list, if its schema does). Don’t try to overload a single query string with OR-clauses the source doesn’t support.

FAQ

Before you run this in production

Can I schedule from the API instead of the console?

Yes. POST /v2/schedules with the Actor ID, cron, timezone and input. The console is enough for a first digest; use the API when you provision jobs for customers.

Does a schedule cost extra?

You pay for the runs it starts — per-result plus platform usage — not a separate “schedule fee”. A failed run can still incur the Actor-start fee, so fix failing jobs promptly.

Related tools

In the same toolkit

More how-to guides

Run Google News Scraper

Start with a 50-row test on Apify’s free credits, then schedule it once the sheet looks right.