How to Scrape Data From a Website Into Excel
To get data from a website into Excel and keep it refreshing without code, import the page with Power Query's From Web connector, then tick Refresh every N minutes and Refresh data when opening the file in the query's properties, as Microsoft's Support pages Import data from the web and Refresh an external data connection describe. ProxyField's residential proxies (from $1.95/GB, or the Easy Trial: 1 GB for $2.95) matter only when you outgrow Excel and script thousands of pages.
- residential IPs
- 412M+
- from, traffic never expires
- $1.95/GB
- Easy Trial
- 1 GB for $2.95
On this page 8 sections
- Which method to use
- Method 1: Power Query "From Web" (no code)
- Method 2: A no-code scraper that exports to Excel
- Method 3: Python to Excel, with proxies
- Other routes: VBA and Excel formulas
- When Excel scraping stops working
- Proxies for spreadsheet scraping at scale
- How to Scrape Data From a Website Into Excel FAQ
Import, in 4 steps:
- Data > From Web (or Data > Get Data > From Other Sources > From Web).
- Paste the page URL and select OK; for a public page, choose the access option that needs no sign-in.
- In the Navigator, pick the table, or one of the Suggested Tables; if none fits, use Add Table Using Examples.
- Select Load (or Transform Data to clean it first).
Refresh, in 4 steps:
- Select a cell in the table, then Data > Queries & Connections > Connections tab; right-click the query and select Properties.
- On the Usage tab, tick Refresh every and enter the minutes, for example 60.
- Tick Refresh data when opening the file.
- To update at any time, select Data > Refresh All (Ctrl+Alt+F5). Enable background refresh, on the same tab, lets you keep working while a refresh runs.
Interval refresh runs only while the workbook is open in Excel. For a closed file, see refresh when the file is closed. If the Navigator finds no table because the page builds it with JavaScript, open the browser's developer tools (Network tab), find the JSON request that carries the data and paste that URL into From Web instead.
Which method to use
| Method | Skill | Works on | Pages | Refresh | Proxies |
|---|---|---|---|---|---|
| 1. Excel Power Query (From Web) | None | Pages with HTML tables in the server's response | One to a few dozen | Built in: on open or every N minutes | Follows your computer's settings; no rotation |
| 2. No-code scraper with Excel export | None | Most pages, including lists that are not tables | Hundreds | Depends on the app | Depends on the app |
| 3. Python script to .xlsx | Basic Python | Any page you can fetch | Thousands and more | Run it on a schedule | Yes, one argument |
Start with method 1. Move to method 2 when the data is not in a table, and to method 3 when you need many pages, pages behind JavaScript, or a site that limits requests.
Method 1: Power Query "From Web" (no code)
Power Query's web connector is part of Excel for Microsoft 365 and imports tables from a public URL; you set it up once and refresh it with a click or on a timer.
The import steps are at the top of this page; here is what each one shows:
- The Navigator lists the tables Power Query found on the page, including Suggested Tables it built from the page's structure. Click each to preview it.
- Add Table Using Examples: type the values you want from the first row or two (for example, a product name and its price), and Power Query fills in the rest of each column from the page. Use method 2 or 3 only if this fails too.
- Transform Data opens the Power Query Editor: remove columns, change types, split text. The steps you record there run again on every refresh.
The refresh settings sit on the query's Usage tab, under Refresh control (Data > Queries & Connections > Connections tab > right-click > Properties):
| Setting | What it does |
|---|---|
| Refresh every N minutes | Re-runs the query on a timer while the workbook is open |
| Refresh data when opening the file | Re-runs it each time the workbook opens |
| Enable background refresh | Returns control of Excel while the refresh runs; untick it when something must wait for the refresh to finish |
| Remove data from the external data range before saving the workbook | Saves the query without its data, so the file holds only what the next refresh fetches |
| Data > Refresh All (Ctrl+Alt+F5) | Refreshes every query in the workbook by hand; Alt+F5 refreshes only the selected one |
Microsoft documents the connector, Suggested Tables and Add Table Using Examples in Import data from the web, and the refresh settings in Refresh an external data connection in Excel. Microsoft says the new web connector is available as part of a Microsoft 365 (Office 365) subscription; the old Web (Legacy) import wizard is deprecated, and an old web query moves over by copying its URL into a new From Web query. The connector reads the HTML the server sends, so it does not see content a page builds with JavaScript after loading, and Microsoft's Web connector troubleshooting page warns that pages which load their content dynamically can give sporadic refresh errors. On a Mac or in Excel for the web, check which Power Query sources your version supports in Power Query data sources in Excel versions.
Many pages with Power Query. If the site pages its table with a URL parameter, such as ?page=2, turn the query into a function of the page number in the Power Query Editor and invoke it over a list of numbers. It works for tens of pages; for hundreds, method 3 is easier to run and to pace.
Refresh when the file is closed
Interval refresh runs only while the workbook is open in Excel; Excel's own refresh settings never update a closed file. There are three ways to get fresh data anyway:
| Option | Code | What runs it | What you need |
|---|---|---|---|
| Refresh data when opening the file | None | Excel, each time someone opens the workbook | Nothing extra; the data is as fresh as the last time the file was opened |
| Power Automate desktop flow: Launch Excel on the workbook, Wait, then Close Excel with Save document | None (drag-and-drop actions) | A scheduled cloud flow with the action Run a flow built with Power Automate for desktop, on a registered Windows machine | A work or school account and a Power Automate license for attended runs, or the unattended add-on for runs with nobody signed in |
| Python script (method 3) | A few lines | Windows Task Scheduler or cron | Python on any computer or server; Excel is not needed to write the file |
For the desktop flow, untick Enable background refresh on the same Usage tab, so the query finishes before the flow saves the file, and set the Wait longer than one refresh takes. Microsoft documents the actions in Excel actions reference and the trigger and licenses in Trigger desktop flows from cloud flows.
Method 2: A no-code scraper that exports to Excel
Point-and-click scraping apps and browser extensions let you click the fields on a page, such as a name, a price and a rating, and repeat the selection across the list and its next pages. They export CSV or XLSX files you open in Excel, and cloud apps can run on a schedule. They suit lists and cards that are not HTML tables, and pages that need a browser. How to pick one is in our guide to no-code web scrapers.
The limits: templates break when the site changes its layout, larger jobs need a paid plan, and whether you can add your own proxies depends on the app.
Method 3: Python to Excel, with proxies
A few lines of Python fetch the pages, read their tables and write one Excel file. This example collects three pages of a table from scrapethissite.com, a public sandbox for scraping practice, through the ProxyField gateway. Replace <login> and <password> with your credentials; <login>-country-us-city-new_york asks for an exit IP in New York.
# pip install requests pandas lxml openpyxl
import io, time
import requests
import pandas as pd
proxy = "http://<login>-country-us-city-new_york:<password>@gate.proxyfield.io:7000"
frames = []
for page in range(1, 4):
url = f"https://www.scrapethissite.com/pages/forms/?page_num={page}"
html = requests.get(url, proxies={"http": proxy, "https": proxy}, timeout=30).text
frames.append(pd.read_html(io.StringIO(html))[0]) # the first <table> on the page
time.sleep(2) # be polite between pages
pd.concat(frames, ignore_index=True).to_excel("hockey_teams.xlsx", index=False)We ran this script without the proxy on October 27, 2026 (pandas 3.1.0, requests 2.34.2): it wrote 75 rows and 9 columns, from "Team Name" to "+ / -". For data that is not in a <table>, parse the page with Beautiful Soup and build the rows yourself; for pages that build their content with JavaScript, load them with Playwright first. Both are covered in how to build a web scraper, and the proxy setup in Python proxy setup.
Run the script on a schedule, with Windows Task Scheduler or cron, and the workbook stays current without opening Excel. Scheduling options are compared in our guide to scheduling web scrapers.
Other routes: VBA and Excel formulas
Excel's VBA can request a page and write values into cells, and on Windows the WEBSERVICE function returns a URL's raw response into a cell. Both read the raw HTML only, so they share Power Query's limit on JavaScript pages, and VBA code is harder to maintain than Python. For the code, see VBA and PowerShell web scraping. Google Sheets users have IMPORTHTML and IMPORTXML instead: web scraping in Google Sheets.
When Excel scraping stops working
- The Navigator shows no tables, or empty ones. Try Add Table Using Examples first. If the examples find nothing, the page loads its data with JavaScript: use method 2 or 3 with a browser, or find the JSON request the page makes in the browser's developer tools and import that URL with From Web instead.
- The workbook did not update overnight. Interval refresh needs the file open in Excel; schedule a flow that opens and saves it, or a script (refresh when the file is closed).
- A refresh fails now and then with an error such as "the column 'Foo' of the table wasn't found", and works on the next try. Microsoft's troubleshooting page puts this down to timing on pages that load content dynamically: the connector sometimes downloads the HTML before the page has finished changing. Import the page's JSON request instead, or move the job to method 3 with a browser.
- The Web View preview says "This browser is no longer supported". The preview tab renders with Internet Explorer, which some sites refuse; Microsoft says the warning affects only the Web View, not the import, so pick the table in the Table View.
- The refresh fails with an access error. The site may block automated requests or limit your IP. Slow down, and for recurring jobs on such sites use method 3 with rotating proxies.
- Columns shift after a refresh. The site changed its layout. Re-select the table and check your transform steps.
- Login pages. Power Query can pass credentials to some sites, but scraping behind a login raises access and terms questions; check the rules first in is web scraping legal.
Proxies for spreadsheet scraping at scale
Excel itself sends every request from your computer's IP, which is fine for a few refreshes a day. Collecting thousands of pages for a workbook, or the same page from several countries, needs a script that rotates IPs. ProxyField residential proxies give a new IP on every request or a sticky session from 30 s to 36 h, with country, region and city targeting, over HTTP, HTTPS and SOCKS5. A typical HTML page of about 100 KB means 1 GB covers about 10,000 pages. You pay per GB with no subscription; the traffic never expires, and all purchases are final. What a job costs is worked out on proxies for web scraping.
How to Scrape Data From a Website Into Excel FAQ
How do I scrape data from a website into Excel?
ProxyField recommends starting in Excel itself, in 4 steps: open Data > From Web, paste the URL, pick the table in the Navigator and select Load, with no code and no proxy. Use Add Table Using Examples when the Navigator finds no table. Only for thousands of pages or sites that limit requests does a Python script with rotating proxies, from $1.95/GB, do the collecting better.
Can I scrape a website with Excel or Google Sheets?
Yes, for simple tables. Excel's Power Query web connector and Google Sheets' IMPORTHTML and IMPORTXML functions pull tables and elements from public pages. Both read only the HTML the server sends, so they miss content loaded with JavaScript and stop working on sites that block automated requests.
How do I keep website data in Excel refreshing automatically without writing code?
Import the page with Data > From Web, then open Data > Queries & Connections > Connections tab, right-click the query, choose Properties and, on the Usage tab, tick Refresh every N minutes and Refresh data when opening the file. Interval refresh runs only while the workbook is open; for a closed file, tick Refresh data when opening the file and let a scheduled Power Automate desktop flow open and save the workbook. For many pages, a Python script run by Task Scheduler or cron writes a fresh .xlsx file each time.
How do I automate data scraping from websites into Excel?
Set up the import once with Data > From Web, then pick a schedule by how the file is used. While the workbook is open, Refresh every N minutes on the query's Usage tab does it; for a closed file, a scheduled Power Automate desktop flow can launch Excel, wait for the refresh and close it with Save document, which needs a Power Automate license. For hundreds of pages, a Python script run by Task Scheduler or cron writes a new .xlsx file each run without Excel open.
Can VBA handle JavaScript-heavy websites?
Not well. VBA's HTTP requests return the raw HTML, before any JavaScript runs, so content the page builds in the browser is missing. Call the JSON endpoint the page uses, or render the page with a headless browser such as Playwright and write the results to Excel from Python.
Can I scrape data from a website to Excel for free?
Yes. Power Query is part of Excel, Google Sheets' import functions come with Sheets, and Python with pandas is open source. Costs start when you scrape at volume: servers, a paid plan for a no-code app, or proxy traffic for sites that limit requests per IP.
How do I scrape multiple web pages into one Excel sheet?
If the pages differ only by a number in the URL, such as page=2, turn the Power Query query into a function of that number and invoke it over a list, then combine the results. For hundreds of pages, loop over the URLs in Python, read each table with pandas and write them to one .xlsx file, with a pause between requests.
Does Excel have a built-in web scraper?
Yes: Power Query's From Web connector, under Data > From Web in Excel for Microsoft 365. It finds HTML tables and Suggested Tables on a page, and Add Table Using Examples extracts a table from a few values you type. It reads only the HTML the server sends, so pages built with JavaScript need a no-code scraper or a script.
Is Excel good for web scraping?
For small, refreshable tables from public pages, yes: it needs no code and keeps the data where you analyze it. For lists that are not tables, JavaScript pages, thousands of pages or sites that limit requests, a no-code scraper or a Python script does the collecting better, and Excel stays the place you open the result.
What is data scraping in Excel?
It means collecting data from web pages into a workbook automatically instead of copying it by hand, usually with Power Query's From Web connector, a VBA macro, or a script or app that exports an .xlsx file. The data then refreshes on demand or on a schedule.
Related pages
Easy Trial: 1 GB for $2.95.
Try for the price of 1 GB, no subscription, traffic never expires.