Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
For a conventional HTML table or list, enter =IMPORTHTML("https://example.com/page","table",1) in Google Sheets and replace the example URL with the page you want to import. Use "list" instead of "table" for an HTML list. If you need particular headings, links, or other elements, use IMPORTXML with an XPath expression. These built-in formulas are the simplest starting point for a small, periodically refreshed import; they may not work when the page’s content is rendered by JavaScript or blocks automated requests.
Choose the right way to import the page
Start by identifying what the page actually exposes. A regular HTML table or list is a good fit for IMPORTHTML. Use IMPORTXML when you need to target particular elements or attributes in the page’s structured HTML. If the content is available only after JavaScript runs, requires a more involved parsing process, or needs repeated scheduled ingestion from files, consider Apps Script or a specialized scraper instead.
| Situation | Best first choice | Why |
|---|---|---|
| One static HTML table or list | IMPORTHTML |
It imports a table or list by type and one-based position. |
| Specific headings, links, or attributes | IMPORTXML |
XPath lets you select elements or attributes in structured HTML or XML. |
| Scheduled CSV files or custom parsing | Apps Script | It can automate custom fetch and write logic; Google provides a trigger-based CSV-to-Sheets example. |
| Complex application-level read/write logic | Sheets API | It is intended for integrations that need programmatic control in their own language. |
| JavaScript-rendered, paginated, or marketplace-heavy pages | Evaluate a specialized scraper or add-on | Some vendors advertise capabilities beyond native formulas. Check their current access, pricing, terms, and permissions. |
Import a table or list with IMPORTHTML
Google documents the syntax as IMPORTHTML(url, query, index). The URL is the web page, query is either "table" or "list", and index identifies which table or list to import. The index starts at 1, not 0.
- Open the destination spreadsheet and select an empty cell where the imported data can expand into adjacent rows and columns.
- Enter a formula such as
=IMPORTHTML("https://example.com/page","table",1). - Replace the example URL with the target page’s URL. If you want a list, use
=IMPORTHTML("https://example.com/page","list",1). - If the result is a different table or list than expected, try the next index:
2, then3, and so on. - On the first attempt to fetch an external URL, follow any access prompt and click Allow access if Sheets asks you to confirm it.
Leave enough blank space for the imported range to expand. Existing values in its spill area can prevent the result from appearing. Test in a blank area before building formulas or charts around the output.
#1 Best Overall
- hole punched
- high quality card stock
- 4 pages
- made in USA
- keyboard shortcuts
Target specific content with IMPORTXML
When the page does not present the information as a convenient table or list, IMPORTXML can use XPath to select elements. Google documents its syntax as IMPORTXML(url, xpath_query, locale); the locale is optional. Google describes supported input as structured XML, HTML, CSV, TSV, RSS, and Atom data.
For example, to try importing page headings, enter =IMPORTXML("https://example.com/page","//h1"). Replace the URL and XPath with the page and element you actually need. The expression //h1 selects heading elements; an XPath expression can also target other elements or attributes, but it must match the structure the importer can access.
- Inspect the page’s HTML or source and identify the element that contains the value.
- Write an XPath expression for that element or attribute.
- Test it in a blank cell using
=IMPORTXML("PAGE_URL","XPATH"), substituting the real URL and XPath. - If the result is missing or too broad, refine the XPath and verify that the selected content exists in the fetched HTML.
XPath is only as useful as the HTML available to the import. If a value is inserted later by client-side JavaScript, it may not be present in the source the formula can fetch.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesInspect, validate, and maintain the imported data
A formula returning values does not guarantee that the imported range has the shape or meaning you need. Check the result before using it in reporting, calculations, or downstream automation.
Rank #2
- Mastering Google Sheets: A Step by Step Handbook for Beginners to Simplify Data Analysis, Boost Productivity, and Unlock Your Full Spreadsheet Potential
- ABIS BOOK
- Confirm the selected content: Compare the imported rows and columns with the target page, particularly if the page has multiple tables.
- Check the spill range: Keep the destination area clear so the full result can populate.
- Normalize values: Check date and number formats before relying on sorting, arithmetic, or charts.
- Remove duplicates where appropriate: Decide whether repeated records are meaningful or should be removed for your use case.
- Keep provenance: Put the source URL and the retrieval time in adjacent columns or a separate tracking area so readers can see where the data came from.
- Plan for change: Page markup can change, which can make an XPath stop matching or alter the table index. Recheck the import when the output changes unexpectedly.
Google describes import functions as suitable for small, dynamic data pulls that update periodically. They are not a substitute for a dependable high-volume ingestion pipeline when you need precise scheduling, extensive transformation, or application-level control.
What to do when IMPORTHTML or IMPORTXML returns nothing
An empty result is a reason to inspect what the importer can see, rather than proof that the visible page has no data. Native import functions work from structured content available to the importer. A page that fills in values only after JavaScript executes, or that blocks automated requests, may not provide the needed content to a formula.
- Check the URL: Make sure it points to the page containing the data, not a search form, redirect, or page that requires an interactive session.
- Check the index: For
IMPORTHTML, test other one-based table or list indexes. - Check the XPath: For
IMPORTXML, make sure it matches the literal structure in the fetched HTML, not just how the rendered page looks in a browser. - Check external access: If Sheets asks you to allow access to the URL, approve the request as an editor.
- Consider JavaScript or access controls: If the desired values are added after the initial HTML is loaded, or the site blocks automated access, a formula may be the wrong tool. Evaluate Apps Script or a specialized scraper, subject to the site’s terms and access rules.
- Check the destination cells: Clear values from the area where results need to expand.
Changing to Apps Script does not automatically solve a page that requires a browser-rendered session; choose an approach that can access the content you need. For repeated or more involved workflows, Google’s guidance distinguishes import formulas for relatively small dynamic pulls from Apps Script or the Sheets API for more complex logic.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Move scheduled or custom imports to Apps Script
Apps Script is a better next step when the job needs custom parsing, a recurring schedule, multiple files, or logic that should run before writing rows. Google’s CSV-to-Sheets sample demonstrates a time-driven trigger that reads files from Drive, appends rows, and reports processed and unprocessed files. That is a useful model for scheduled file ingestion, but it is not the same as a turnkey scraper for every website.
Rank #3
Before automating a fetch, decide how to handle changed page structure, missing values, duplicate records, and failures. A scheduled process should make it possible to identify which source was processed and when, and to notice when a run fails instead of silently treating incomplete output as current data.
Use the Sheets API for application integrations
If a separate application needs more complex programmatic read/write behavior, use the Google Sheets API rather than relying on a spreadsheet formula as the entire integration. Google positions the API for users who need more complex logic in their own language. This approach gives the application control over how it fetches, transforms, and writes data; it also means you must implement and maintain that logic.
Evaluate third-party scrapers and add-ons carefully
Specialized tools may be worth evaluating for pages that rely on JavaScript, pagination, logins, or source-specific extraction. The vendors below describe their own capabilities; those descriptions are not independent guarantees. Confirm current pricing, quotas, permissions, regional availability, and terms before connecting an account or relying on a feature.
- SheetMagic: Advertises formula-based scraping and platform formulas for sources including Google Maps, YouTube, Amazon, and LinkedIn.
- Amapulse, formerly ImportFromWeb: Its Marketplace listing says it can extract and refresh ecommerce fields, handle JavaScript-rendered pages, and process one or 1,000+ URLs.
- Scrapingdog: Its Marketplace listing advertises direct extraction from Google Search, Maps, News, Amazon, and LinkedIn, including an Amazon search scraper.
- WebSync: Says it crawls pagination, dynamic tabs, and logins, and exports to Google Sheets, Drive, or local folders.
Compare tools on the abilities that matter to your page and workflow: JavaScript rendering, pagination, login or session handling, selector flexibility, refresh scheduling, batch limits, output shape, cost, permissions, and export destination. Do not assume that a tool’s ability to fetch a page means it has permission to access or reuse every part of that site.
Rank #4
- The Google Workspace Bible: [14 in 1] The Ultimate All in One Guide from Beginner to Advanced Including Gmail, Drive, Docs, Sheets, and Every Other App from the Suite
- ABIS BOOK
Or skip the browser setup
ScreenshotNeo is a website screenshot API, not a structured-data scraper: a screenshot gives you a visual capture, not rows and columns for analysis. It can be useful when you also need visual evidence of a page alongside data you import separately. One GET request returns an image or PDF; the ScreenshotNeo API documentation describes its request options.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo removes cookie and consent banners, newsletter popups, and chat widgets before capture; each step can be turned off. Bot checks, blank pages, failed loads, timeouts, and cache hits cost nothing, and responses identify the page verdict and billing status in headers. Its MCP server gives AI agents tools to take screenshots, get page information, and capture PDFs. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Learn about ScreenshotNeo, or sign up for 1,000 free screenshots a month with no card.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Troubleshooting checklist
| Symptom | Likely cause | What to try |
|---|---|---|
| The formula returns no useful content | The page may not expose the desired content as accessible structured HTML, or the selector may not match. | Inspect the source available to the importer; try another table index or refine the XPath. If content is JavaScript-rendered or blocked, evaluate another method. |
| The wrong table appears | The page contains multiple tables and the selected index is not the one you want. | Try the next one-based index and compare the output against the page. |
| Only part of the desired data appears | The page may split content across pages, or the selected structure may exclude some values. | Check whether pagination or dynamic loading is involved; a basic import formula may not cover the entire dataset. |
| Sheets requests permission | The spreadsheet needs confirmation to access the external URL. | As an editor, click Allow access when prompted. |
| The result cannot expand into the sheet | Cells in the output range may already contain values. | Clear the expected spill area and test again in a blank region. |
| A previously working import changes or stops | The page structure or source access may have changed. | Recheck the page HTML and selector, then choose a method suited to the changed page and required schedule. |
Frequently asked questions
Can Google Sheets import a whole website?
These formulas import selected structured content from a page; they are not a general-purpose crawler for an entire site. A multi-page crawl requires a workflow that handles page discovery, pagination, and the site’s access conditions.
Will imported website data update automatically?
Import functions update periodically, but they are not a precise real-time feed or a guaranteed schedule. If you need a controlled recurring job, use an automation designed around that schedule.
Can a screenshot API put a website’s table into spreadsheet cells?
No. A screenshot API returns an image or PDF rather than structured table values. Use an import formula or a data extraction workflow for cells; use screenshots only when you need a visual record.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

