How to Import Data from a Website into Google Sheets

Cody Schneider8 min read

Tired of endlessly copying and pasting data from websites into your spreadsheets? There's a much smarter way to get that information into Google Sheets. You can use simple, built-in functions to pull data directly from a webpage, and it will even update automatically.

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

This tutorial will show you exactly how to import web data into Google Sheets for tracking stock prices, sports scores, product listings, or anything else you need. We'll cover the two most powerful formulas for the job, IMPORTHTML and IMPORTXML, with simple, step-by-step examples.

Why Automate Data Imports into Google Sheets?

Manually copying data is not just slow, it's prone to errors and outdated the moment you paste it. By connecting your Google Sheet directly to a data source on a website, you create a live, automated report. This opens up a ton of possibilities:

  • Competitive Analysis: Track your competitors' pricing or product listings automatically.
  • Financial Tracking: Pull the latest stock prices or cryptocurrency values directly into your portfolio tracker.
  • Content Creation: Scrape lists of inspirational topics, statistics for an article, or data for an infographic.
  • Sports Stats: Keep up-to-date league tables or player stats in a custom dashboard.

The core benefit is simple: saving time. You set up the import once, and Google Sheets handles the rest, refreshing the data periodically (usually about once an hour).

The Easiest Method: Scraping Tables and Lists with IMPORTHTML

The IMPORTHTML function is your go-to tool when the data you want is already organized in a neat table or list on a webpage. It's incredibly straightforward and perfect for beginners.

Understanding the IMPORTHTML Syntax

The formula looks like this:

=IMPORTHTML(url, query, index)

Let's break down each part:

  • <strong>url</strong>: The full web address of the page you want to pull data from. Be sure to include the "https://www." part. This must be enclosed in quotation marks. For example: "https://en.wikipedia.org/wiki/List_of_Academy_Award-winning_films".
  • <strong>query</strong>: This tells Google Sheets what type of element you're looking for. Your only two options, in quotation marks, are "table" or "list".
  • <strong>index</strong>: The number of the table or list on the page you want to import. Web pages can have multiple tables and lists, and this number tells Google Sheets which one to grab. It starts counting from 1.
GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Step-by-Step Example: Importing a Table from Wikipedia

Let's use a practical example. We'll pull the table of the world's most populous countries from Wikipedia.

Step 1: Get the URL

First, navigate to the page and copy the full URL from your browser's address bar. For this example, we'll use: https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population.

Step 2: Identify the Query and Index Number

Looking at the Wikipedia page, we can clearly see the data we want is in a structured table. So our query will be "table".

Next, we need the index number. This is often the trickiest part, as you can't always tell just by looking. Sometimes there are hidden tables used for page layout. The easiest way to find the right index is often just trial and error. Let's start by guessing it's the first table on the page, so we'll use an index of 1.

Step 3: Write the Formula

Now, open a blank Google Sheet. Click on cell A1 and type in the full formula:

=IMPORTHTML("https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population", "table", 1)

Press Enter. After a moment of "Loading...", the entire table will appear in your sheet, perfectly formatted into rows and columns.

If the wrong table appears, you would simply go back into the formula and change the index number from 1 to 2, then 3, and so on, until the correct data appears.

For More Control: Scraping Custom Data with IMPORTXML

What if the data you want isn't in a nice table? Maybe you want to pull just a specific headline, a product price from an e-commerce site, or all the links from a blog post. In these cases, IMPORTHTML won't work. You'll need its more powerful and flexible sibling: IMPORTXML.

This function lets you pull any piece of information from a page's underlying HTML code by specifying its "XPath."

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Understanding the IMPORTXML Syntax

The formula structure is simpler, but one part requires a bit more explanation:

=IMPORTXML(url, xpath_query)

  • <strong>url</strong>: Same as before, the full URL of the webpage, in quotes.
  • <strong>xpath_query</strong>: This is a special query string that acts like a path to the exact data you want on the page. It can feel intimidating, but there's a very simple way to generate it right from your browser.

A Quick-and-Dirty Guide to XPath

XPath (XML Path Language) is a syntax for navigating elements in an XML or HTML document. Think of it like a folder path on your computer (e.g., C:\Users\YourName\Documents\file.txt). XPath provides a "path" to a specific element on the webpage.

Thankfully, you don't need to learn the whole language from scratch. You can use your browser's built-in developer tools to copy the XPath for any element on a page.

How to Find XPath using Chrome DevTools:

  1. Navigate to the page you want to scrape.
  2. Right-click on the specific piece of data you want to import (e.g., a product's price).
  3. From the menu, select "Inspect." This will open the Developer Tools panel, highlighting the HTML code for that specific element.
  4. Right-click on the highlighted line of code in the Developer Tools panel.
  5. Go to Copy > Copy XPath.

You have now copied the precise XPath query you need for your IMPORTXML formula!

Step-by-Step Example: Importing Article Headlines from a Blog

Let's imagine we want to pull a list of all the article titles from a website, like the HubSpot blog, for content inspiration.

Step 1: Get the URL

Navigate to the HubSpot blog homepage: https://blog.hubspot.com

Step 2: Inspect a Headline to Find its XPath

Find the first article headline, right-click on it, and select "Inspect." You'll see the HTML is probably something like an <h3>, or <h2> tag with a specific class.

Instead of manually constructing the XPath, we'll automate it. We can see all the headlines seem to use the same HTML structure. To grab them all, we'll build a slightly more generic XPath.

A common XPath pattern for headlines is //h3 to get all level-3 headings. If we want only headlines that are also links, we could try //h3/a. But for our specific case on the HubSpot blog, headlines are inside a link with a class called blog-post-card-preview-title. A well-crafted XPath to grab all of them would look like this: "//a[@class='blog-post-card-preview-title']".

This tells IMPORTXML to find every link (a tag) that has that specific class (class='...').

Step 3: Write the Formula

Now, go back to your Google Sheet and type the formula in cell A1:

=IMPORTXML("https://blog.hubspot.com", "//a[@class='blog-post-card-preview-title']")

Press Enter. A column will be populated with all the latest article titles from the HubSpot blog's main page.

GraphedGraphed

Still Building Reports Manually?

Watch how growth teams are getting answers in seconds — not days.

Watch Graphed demo video

Troubleshooting Common Web Scraping Issues

Sometimes, your import functions will return an error. Here are the most common ones and how to fix them.

  • Error: Could not fetch URL: This often means the website is blocking automated requests from Google's servers. Some modern websites that rely heavily on JavaScript won't work well with these formulas because the data isn't present in the initial HTML that Google Sheets loads. You might need a more advanced solution like Google Apps Script or a dedicated scraping tool in these cases.
  • Error: #N/A (Imported content is empty): This is one of the most common issues. It usually means your index number (for IMPORTHTML) is wrong, or your xpath_query (for IMPORTXML) doesn't match any elements on the page. Double-check your XPath or try different index numbers.
  • Throttling: Google Sheets has limits on how many import functions you can have in one spreadsheet. If you are importing from dozens of different sources, your formulas might stop working temporarily. Try to combine imports where possible and be economical with your usage.

Best Practices for Importing Web Data

Finally, keep a few guidelines in mind to get the most out of web scraping in Google Sheets:

  • Be Respectful: Always check a website's terms of service. Scraping is a grey area, and some T&Cs explicitly forbid it. Don't hammer a small website with too many requests.
  • Keep it Clean: The raw data you import can sometimes be messy. Use other Google Sheets functions like TRIM, CLEAN, or QUERY on the results of your import formula to organize and sanitize the data for analysis.
  • Add Context: Once your data is in the sheet, don't leave it in a vacuum. Use it as a source for charts, pivot tables, or simply to add notes and analysis in adjacent columns. The imported data is often the starting point, not the end result.

Final Thoughts

By mastering IMPORTHTML and IMPORTXML, you can effectively turn Google Sheets into a powerful tool for automating data collection. This saves countless hours of manual data entry and provides you with up-to-date information for making better decisions, whether you're tracking prices, leads, or stats.

While pulling new data into sheets is a great first step, it's often just one piece of your reporting puzzle. You still have to manually combine that information with performance data living in other platforms like Google Analytics, Facebook Ads, or your CRM. To connect all your live data sources automatically and get instant insights, we built Graphed. It allows you to use simple, conversational language to build real-time dashboards that combine all your data, completely eliminating the need for complex formulas or manual exporting.

Related Articles

How to Enable Data Analysis in Excel

Enable Excel's hidden data analysis tools with our step-by-step guide. Uncover trends, make forecasts, and turn raw numbers into actionable insights today!