Guide

A website into Google Sheets, columns and all.

IMPORTXML and IMPORTHTML are the first thing everyone tries, and they work — until the page builds its list with JavaScript, spreads it over twenty pages, or turns Google’s servers away. Here is what those formulas can and can’t do, and the one-click way for the pages they can’t.

Install for Chrome — free Install for Edge Free: Open in Google Sheets. Pro: rows sent straight into your own sheet, on a schedule too.

The one-click way

01

Open the page

In Chrome or Edge, the page with the list you want: search results, a directory, a product listing, a table.

02

Click the extension

The rows are found and the columns named. If the list runs over many pages, Start crawling on the Crawl tab collects all of them first.

03

Into Sheets

From the arrow beside Export CSV, Open in Google Sheets copies the table and opens a new sheet: paste, and every column lands in its own column. With Pro, Send to Google Sheets writes the rows into a sheet in your account directly.

IMPORTXML and IMPORTHTML: what they can and can’t do

IMPORTHTML(url, "table", n) pulls the nth real HTML table or list from a public page, and IMPORTXML(url, xpath) pulls whatever an XPath expression matches. For a simple public table that you want to refresh inside the sheet, they are the right tool, and free.

They fetch the page from Google’s servers and read only what the server sends before any JavaScript runs. So they come back empty or with the wrong thing when the list is drawn by a script, when it is a grid of cards rather than a table, when it is behind a login, when it runs over several pages, or when the site refuses Google’s servers — which many do. That is when Imported content is empty or Could not fetch url appears.

Why an extension gets what the formulas can’t

The extension reads the page you have open, in your own browser, after it has finished loading: the same rows you see, signed in as you. It doesn’t need a table or an XPath — it finds the repeating rows and names a column per field — and it follows Next, Load more and infinite scroll to collect every page.

Open in Google Sheets is free.

Rows sent straight into your sheet (Pro)

Send to Google Sheets signs you in with Google and writes the rows into a spreadsheet in your own account — no copy and paste. Put a saved setup on a schedule and each run adds its rows to the same sheet, so the sheet grows by itself.

Values go in exactly as written, so a phone number keeps its leading zero and a cell that starts with = is never run as a formula. There is no server of ours in between: the rows go from your browser to Google. The extension is only allowed to open spreadsheets it created, never the rest of your Drive. Pro is a one-time purchase: $19 at the founding price for the first 100 buyers, $25 after that, with every update included.

Reasonable questions

Why is IMPORTXML returning empty or Could not fetch url?

IMPORTXML fetches the page from Google’s servers and reads only what the server sends before JavaScript runs. Lists drawn by scripts, pages behind a login and sites that refuse Google’s servers come back empty. An extension that reads the page in your own browser gets them.

Can I scrape a website into Google Sheets for free?

Yes. Open in Google Sheets is free: it copies the table the extension found and opens a new sheet to paste into, with every column intact.

Can it scrape multiple pages into Google Sheets?

Yes. Start crawling on the Crawl tab follows the list through every page first, then the whole table goes to Sheets at once.

Can Google Sheets update automatically from a website?

IMPORTHTML and IMPORTXML refresh by themselves for simple public tables. For anything else, Magic Scraper Pro can run a saved setup on a schedule and add each run’s rows to the same sheet, while your browser is running.

Does it get access to my Google Drive?

No. Send to Google Sheets uses Google’s narrowest permission: the extension can open only the spreadsheets it created itself.