WebRobot

Google Sheets Web Scraper for Web Scraping With Google Sheets That Pulls Website Data Into Your Spreadsheet Daily

Google Sheets can scrape a static table with IMPORTXML, but it cannot render JavaScript, click to page two, open each product or sign in, and it refreshes when Google decides. WebRobot does the scraping outside the sheet: you describe the columns, a robot reads the site daily or hourly in a real browser, and one IMPORTDATA formula pulls the latest rows into your tab.

For pricing, sales and ops teams whose reports already live in Sheets. Flat plans from $79 a month.

Run the robot

Robot console

No account needed Running · s Complete · rows

Or try:

Reads one page, up to 25 rows, usually in under a minute.

Agent log

▌

Extracted data ·

The page was read, but none of the data you described is on it. Try describing it the way it reads on the page, or another page.

more rows found on this page. Confirm your email to see every row and download the CSV.

Want this data fresh every morning? A plan runs this robot on a schedule, follows Next pages and feeds Sheets and the API.

What changes

The same tab with an IMPORTXML formula and with a scraper feed

Left is what most teams see the week a store moves its prices into JavaScript. Right is the same tab reading a WebRobot feed.

The sample rows are illustrative. The formula on the right is the real shape of the feed: every robot has a records endpoint that returns its latest finished run as CSV, and Sheets reads it with IMPORTDATA. Your API key goes in the URL because Sheets cannot send headers, so keep that tab shared only with your team.

Your options

Web scraping with Google Sheets compared by method

Four ways to get website data into a spreadsheet. The limits come from Google's own documentation for the built-in functions and Apps Script quotas.
Method JavaScript pages Pagination and detail pages Logins Schedule Who fixes it
IMPORTXML / IMPORTHTML No One URL per formula No About hourly, set by Google You rewrite the XPath
Apps Script with UrlFetchApp No, raw HTML only Yes, if you code it Only simple forms you code Time triggers; 6 minutes per run, 90 minutes a day on a free Google account, 6 hours on Workspace You maintain the script
Sheets add-on Depends on the add-on Usually per URL Rarely Mostly when you click The add-on vendor, you re-map columns
WebRobot feed Yes, real browser Yes, follows next pages and opens each item Yes, on Scale and above Daily on Launch, hourly on Scale, real-time monitors on Autopilot The robot re-maps fields after a redesign and pauses with an alert instead of writing blanks

To be fair to the free route: if the data sits in a plain HTML table on one or two pages, IMPORTHTML is the right tool and you do not need to buy anything. The trouble starts when the page is built by JavaScript, spans 40 result pages, or blocks requests coming from Google's servers. If Excel is where your team works instead, scrape website to Excel covers the download and workbook setup.

Analyst at a desk reviewing a spreadsheet of scraped rows

Delivery

Pull data from a website into Google Sheets without touching XPath

The sheet stops being the scraper and becomes the report. Your pivot tables, VLOOKUPs and charts point at the feed tab, and the feed tab always shows the last finished run.

  • One formula per robot. Paste the IMPORTDATA line from the robot page into A1 of an empty tab.
  • Text stays text. Cells that start with = + - or @ are neutralized so nothing on a scraped page runs as a formula in your sheet.
  • History stays in WebRobot. Earlier runs stay in your workspace for the retention period you set, so you can download one as CSV or Excel when someone asks what the price was last Tuesday.
  • Alerts outside the sheet. On Scale a Slack message or webhook fires when a tracked value changes, so nobody scrolls the tab looking for differences.

How it works

Google Sheets scrape website setup in four steps

STEP 1

Describe the columns

Paste the listing or search URL and write what one row should hold, for example "product, price, compare-at price, stock, rating".

STEP 2

Check the live run

The robot opens the real page in a browser, follows pagination and detail links, and shows the rows before anything is scheduled.

STEP 3

Schedule it

Daily on Launch or hourly on Scale. Each run is stored with its timestamp.

STEP 4

Point the sheet at it

Copy the IMPORTDATA line into a tab. Sheets refreshes it about hourly, and your reports read from that tab.

Who uses it

Google Sheets get data from website jobs teams run every week

The common thread is a report that already lives in Sheets and a person who currently fills it by hand.

Competitor price sheet

Rival prices, sale flags and stock for the SKUs you care about, refreshed every morning before the pricing meeting. See price monitoring.

Lead list for reps

Businesses from directories and maps with website, phone and the qualifying fields your reps filter on, appended weekly. See lead generation scraping.

Listings tracker

New listings, price cuts and days on market from brokerage and rental sites in one tab per market. See real estate data scraping.

Hiring signals

New openings at target accounts from their careers pages and ATS boards, so sales sees who is growing. See job scraper.

Review and rating audit

Star ratings and review counts per location for a local SEO client report. See Google Maps scraper.

Catalog sync

Product names, prices and images from a supplier or rival Shopify store into the sheet your merch team edits. See Shopify scraper.

Troubleshooting

Why web scraping in Google Sheets stops working

Most IMPORTXML tabs do not fail on day one. They fail the week a site changes, and the sheet keeps showing yesterday's cached value or a quiet #N/A that nobody notices until a report is wrong.

A scraper built for this job handles each of these causes in a different place: the browser renders the JavaScript, the robot paces its requests like a person, and the AI re-reads the page by meaning instead of by class name, so a renamed div does not empty your price column.

#N/A, imported content is empty

The values are drawn by JavaScript after the page loads. The built-in functions only see the first HTML response.

Could not fetch url

The site refused the request. IMPORT functions fetch from Google's servers, and many retailers and directories block those.

Wrong or shifted values

A redesign moved the element your XPath pointed at. The formula still returns something, just not the price.

Only the first page

Each formula reads one URL. Page 2 to page 40 and every product detail page need their own formula or a script.

Stale numbers

Recalculation runs about hourly on Google's schedule, with no dated history of what changed.

Sizing

Which plan fits your Google Sheets web scraping job

One row read once is one record. A row re-read every day for a month is 30 records.

about 9,000

records a month

300 competitor products read once a day into a pricing tab.

Launch, $79 a month, 5 robots, daily

about 72,000

records a month

100 hero SKUs read hourly across business hours plus a weekly lead list, with Slack alerts on price drops.

Scale, $249 a month, 25 robots, hourly, logins

up to 1,000,000

records a month

An agency feeding client report sheets from 100 robots, with real-time monitors and 15 seats.

Autopilot, $699 a month

Yearly billing halves the monthly price ($39, $124 or $349). Full limits are on the pricing page, and the no code web scraper page compares the other point-and-click tools if you are weighing several. Comparing per-request APIs instead? See the web scraping API meter table.

FAQ

Google Sheets web scraper questions buyers ask

Yes, for simple pages. IMPORTXML, IMPORTHTML, IMPORTFEED and IMPORTDATA pull tables, lists, feeds and XPath matches from a public URL into cells. They do not run JavaScript, cannot log in, do not follow pagination, and refresh about once an hour, so they stop working on most modern store, listing and directory pages.

Have something outside the sheet do the scraping on a schedule and let the sheet read a clean feed. With WebRobot you describe the columns, the robot reads the site daily or hourly, and one =IMPORTDATA formula pulls the latest run into your tab. You can also use Apps Script with a time trigger, but you then write and fix the parser yourself.

Not with the built-in IMPORT functions. They read the HTML the server sends first, so prices, reviews or listings that a page loads with JavaScript come back empty or as #N/A. You need a tool that renders the page in a real browser and then hands the finished rows to the sheet, which is what a hosted scraper does.

The usual causes are that the data is loaded by JavaScript, that the site blocks requests coming from Google's servers, that the XPath broke after a redesign, or that the page is too large. The cell then shows #N/A, "Could not fetch url" or "Imported content is empty". Changing the XPath fixes only the third cause.

Google's documentation says IMPORTHTML, IMPORTFEED, IMPORTDATA and IMPORTXML recalculate about every hour, and IMPORTRANGE every 30 minutes. You cannot set an exact time, and a sheet nobody opens still recalculates on Google's schedule, not yours. For a fixed daily snapshot with history, a scheduled scraper writing dated rows is more dependable.

Yes. The Google Workspace Marketplace lists scraping and AI add-ons that run inside a sheet, usually billed per credit or per month. They suit one-off pulls you trigger by hand. For daily jobs across many pages, a hosted scraper that keeps running when the sheet is closed and keeps history is the sturdier setup.

The built-in IMPORT functions cost nothing but cover only static pages. Add-ons and scraping APIs bill per credit or request. WebRobot is a flat monthly plan: Launch is $79 a month for 5 robots and 10,000 records with daily runs, and Scale is $249 for 25 robots, 100,000 records, hourly runs, logins and change alerts.

Not with IMPORTXML, which only fetches public URLs. On Scale and above, a WebRobot robot signs in to an account you own, walks the pages behind the login and delivers the rows to the same feed your sheet reads. Use it only on accounts and sites you are allowed to access.

Stop fixing IMPORTXML and get rows that arrive every morning

Describe the columns, check a live run, and point your sheet at the feed. Plans from $79 a month.