All 67 builds

Running the business

Any website into a spreadsheet

Getting rows out of a website and into a spreadsheet usually means either a paid scraping product with its own dashboard, or Python you have to host and babysit yourself. Below is the workflow I built: it hands the scraping to an Apify Actor someone else already wrote and keeps running, and n8n tidies the rows and writes them to your sheet.

The question
this build answers

How do I keep a spreadsheet of scraped website data up to date without owning a scraper myself?

From the first trigger
to the finished job.

The working version, step by step.

  1. Fire on a schedule

    The schedule decides how often the scrape runs. I built Settings to hold the only four things you ever need to change: the Actor ID, its input, the field that makes a row unique, and the row cap.

  2. Let the Actor do the scraping

    The workflow starts the Apify Actor and waits for it to finish, so the rows come back inside the same run. I built it to wait rather than fire-and-forget, and when the Actor fails, the error branch writes a readable reason instead.

  3. Tidy the rows before they land

    Every row takes a key from the field you named, plus a timestamp and the Actor it came from. I added those two so a bad batch stays traceable later, and the workflow drops rows with no key and caps the count at a few hundred lines.

  4. Write by key, keep it current

    Rows are matched on that key when they're written to Google Sheets, so running the workflow again updates what's already there and adds only what's genuinely new.

Going through n8n's review

Scrape any website without code using an Apify Actor and save the rows to Google Sheets

This one is going through n8n's review. My creator page lists every template of mine that's already live, so you can see what else is available while this one clears.

See my templates on n8n

Who this is for

I built this for anyone who wants a list kept up to date without owning a scraper: lead lists, competitor prices or directory listings, whatever your Actor is set up to pull. The scraper itself is any Actor already published in the Apify Store.

What actually does the scraping

I hand the scraping itself to an Apify Actor: someone else has already written it, tested it and keeps it running. My workflow just asks the Actor for rows and tidies what comes back, never touching a selector, a proxy or a browser.

What it costs to run

Whatever the Apify Actor itself charges per run, on top of n8n's own usage. I built Actor-swapping as a one-field change in Settings, so pointing this at a cheaper or more specific scraper leaves the rest of the workflow alone.

Before you spend anything

The fit matters.

Who should not build this

If you need a scraper that doesn't exist yet in the Apify Store, this workflow doesn't write one for you; you'd need an Actor built first.

If the data you want changes inside a login you don't have a right to scrape behind, no Actor and no workflow makes that a good idea.

Yours to keep

What lands
on your desk.

  • The workflow set up in your own n8n, pointed at your own Apify account and Google Sheet
  • Your Actor ID, its input, your dedupe field and your row cap written into one Settings node
  • A failure branch that reports a readable reason instead of a red box
  • Rows written by key, so a second run updates instead of duplicating

A few useful
answers.

Do I need to know how to scrape a website?

The scraping itself is handled by an Apify Actor someone else has already built and tested, and this workflow only asks it for rows and tidies what comes back.

What stops duplicate rows building up?

Rows are written to Google Sheets matched on a key you choose, so a second run updates the existing row where it already sits.

What happens if the Actor fails?

The error branch writes a readable reason to Settings' run summary, so you can see what happened without opening a red box.

Can I point it at a different Actor later?

The Actor ID and its input both live in the Settings node, so swapping scrapers is a one-field edit.

Make this work for you

Your tools.
Your working version.

Want this built and handed over working? Tell me what your version needs to do. One line is enough to start.

Start a brief