Skip to content

How to Get Website Data into Google Sheets

Three ways to move website data into Google Sheets: the clipboard, direct export from Grabsavo, and the free IMPORTHTML and IMPORTXML functions.

October 27, 2026 · 6 min read

Google Sheets is handy because the data is instantly shared with colleagues, and you can filter it, build pivot tables and feed it into reports. The question is how to get it there from a website. Here are three ways, from completely free to automated, with an honest look at where each one breaks.

Option 1. IMPORTHTML and IMPORTXML

Google Sheets has built-in functions that load a page and pull data out of it. Nothing to install.

IMPORTHTML: tables and lists

=IMPORTHTML("https://example.com/prices", "table", 1)

Arguments: the page URL, the type ("table" or "list" for a bulleted or numbered list), and which table or list on the page to take, starting at 1. Tables and lists are counted separately. If there are several tables, try 1, 2, 3…

In some locales arguments are separated by semicolons instead of commas.

IMPORTXML: any element via XPath

=IMPORTXML("https://example.com/catalog", "//div[@class='product']//h3")

The second argument is an XPath query; the optional third one is a locale for parsing. This pulls, say, every card title. For the price you need a second formula in the next column:

=IMPORTXML("https://example.com/catalog", "//div[@class='product']//span[@class='price']")

To find an XPath, open your browser's developer tools (F12), right-click the element and choose "Copy → Copy XPath". The copied path usually points to one specific element, so generalize it by removing indexes like [3].

Limits

These functions are useful, but they have limits, several of them spelled out in Google's help:

  • Refresh. Import functions check for updates every hour while the document is open. Reloading the tab does not refresh them; to force a refresh, delete the formula and enter it again.
  • Quotas. With many requests a function can sit on "Loading…" or show an error. Google gives no number; the quota counts across all documents the owner has.
  • No NOW(), RAND() and similar — you cannot defeat caching with a "random" URL parameter.
  • Result too large. IMPORTXML can fail with "Result too large"; narrow the query.
  • Google's servers load the page, not your browser. Data that appears only after you sign in is out of reach. In practice, content the site renders with scripts after loading usually does not show up either: the functions see the raw HTML.
  • No pagination. Each page needs its own formula. Tolerable for ?page=1…?page=20, impossible for infinite scroll.
  • Fragile. The site renames a CSS class and your XPath stops matching.

Bottom line: IMPORTHTML is great for public HTML tables such as exchange rates, timetables and reference lists. IMPORTXML suits simple pages where you are willing to maintain the XPath. Card catalogs with hundreds of lazily loaded items need something else.

Option 2. Via the clipboard

The fastest manual route is to collect with an extension and paste.

  1. Open the page with the list and click the Grabsavo icon.
  2. It finds a table or repeated blocks and marks the rows with teal frames and row numbers. If it picked the wrong list, switch candidates.
  3. Check the columns in the preview: rename, change types, add a missing field by clicking an element on the page.
  4. Set up pagination if there are several pages.
  5. When the run is done, export to the clipboard.
  6. In Google Sheets click cell A1 and press Ctrl+V (Cmd+V on a Mac).

The data lands in columns with headers. This works in the free version — up to 10 pages and 500 rows per run.

Option 3. Direct export to Google Sheets

If you export regularly, copy-paste gets old. Grabsavo can export results straight to Google Sheets, with no file in between.

When it helps most:

  • Template + schedule (Pro). Save the setup for a site as a template and schedule runs: every hour, 6, 12 or 24 hours, or weekly. Scheduled runs work while the browser is open. After each run Grabsavo compares the result with the previous one and marks new, changed and gone rows.
  • Teamwork. The sheet is already shared, so nobody waits for you to send a file.

How to lay out a sheet for regular exports is covered in How to monitor competitor prices in a spreadsheet.

Which to choose

Task Method
Public HTML table, hourly refresh is fine IMPORTHTML
Simple page, a few fields, you can maintain XPath IMPORTXML
Card catalog, one-off export Grabsavo + clipboard
Data behind your own sign-in Grabsavo — runs in your session
Regular export with change tracking Grabsavo: template + schedule + Google Sheets export

Prepare the data before pasting

Sheets recognizes numbers according to the spreadsheet's locale. "$1,299.00" may stay text, and SUM will ignore it. Two ways out:

  • clean it in Grabsavo first: the "price → number + currency" step splits it into the number 1299 and the currency;
  • clean it in the sheet:
=VALUE(REGEXREPLACE(B2, "[^0-9.]", ""))

This keeps only digits and the decimal point (for a US-style locale). More in Data cleaning after scraping: 10 techniques.

Common paste surprises

  • Leading zeros. SKU 00123 becomes 123. Set the column to plain text first (Format → Number → Plain text).
  • Long numbers. Barcodes of 13+ digits may show in scientific notation. Same fix.
  • Dates. 03/04 can become March 4 or April 3 depending on locale. Convert dates to YYYY-MM-DD before export.
  • Links. If you will use a link column as a key or for item-page details, keep the full URL rather than a hyperlink with other text.

Privacy

Grabsavo collects in your browser, with your session. Page data is not sent to Grabsavo servers; the only exception is the optional AI assistant, which receives a cleaned sample of 2–3 list items. If your data includes people's names or contacts, read Web scraping and the law.

Try it

Practice collecting and exporting on our demo catalog, which has every kind of pagination. Install the extension from /install.

Sources