Skip to content

How to Scrape Data From a Website Into Excel (3 Ways)

Three ways to get website data into Excel: copy and paste, Excel's built-in From Web (Power Query), or a ready-made scraper that exports XLSX and refreshes straight into your workbook. Steps, limits and working Power Query code.

Published
Reading time
8 min read
Pixel-art robot with an orange >_ on its terminal head carries a row of data from a browser page on the left to a spreadsheet marked with the green Microsoft Excel logo on the right
In this article
  1. Three ways to get website data into Excel
  2. Method 1: copy and paste
  3. Method 2: Excel's built-in From Web (Power Query)
  4. When Excel web scraping with From Web breaks
  5. Method 3: scrape data from website to Excel with a ready-made scraper
  6. Download the Excel file with the API
  7. Load a Scrape.ly export straight into Excel
  8. How Scrape.ly does it
  9. FAQ
  10. Can Excel scrape data from a website automatically?
  11. How do I scrape a website that uses JavaScript into Excel?
  12. Does Excel for Mac have From Web?
  13. What is the best way to do web scraping in Excel without coding?
  14. Is it legal to scrape data from a website into Excel?

There are three ways to get website data into Excel: copy and paste it, use Excel's built-in From Web import (Power Query), or run a scraper that exports the data as an Excel file. If you want to scrape data from website to Excel regularly, the built-in import works for simple pages with HTML tables, and a ready-made scraper covers everything else: pages built by JavaScript, sites that block bots, and results spread across many pages.

This guide shows each method step by step, explains exactly when Excel's own import stops working, and then shows how to load a Scrape.ly export straight into a workbook that refreshes. The example data comes from a real Google Maps run on 22 October 2026.

Three ways to get website data into Excel

Copy and paste Excel's From Web (Power Query) Scrape.ly scraper + Excel export
Setup None A few clicks Pick a scraper and a preset
Best for A one-off, small table Static pages with HTML tables Specific sites at any size
Pages built by JavaScript By hand Hit or miss Handled by the scraper
Sign-in Your browser session Basic, Windows, Web API or organizational account only Public data, no sign-in needed
Many pages Tedious One URL per query unless you write M code Built into each scraper
Bot protection Not an issue No proxies or anti-bot handling Proxies and retries built in
Refresh Manual Data > Refresh All Scheduled runs plus a refreshable query
Where it runs Anywhere Excel for Windows Any browser; XLSX opens anywhere
Cost Your time Included with Excel Per result, e.g. $3.60 per 1,000 places

Method 1: copy and paste

Select the table in your browser, copy it, and paste it into Excel. For a single table you'll use once, this is fine. It breaks down the moment you need the data again tomorrow, need more than one page, or the "table" is really a list of cards: you end up cleaning merged cells and stray links by hand.

Method 2: Excel's built-in From Web (Power Query)

Excel's web import uses Power Query, Microsoft's import and cleanup tool. These steps follow Microsoft's support guide:

  1. Open a workbook and go to the Data tab. Click From Web, or Get Data > From Other Sources > From Web.
  2. Enter the URL of the page and click OK.
  3. If Excel asks how to connect, choose Anonymous for a public page.
  4. In the Navigator, pick one of the detected tables. Web View shows the page with each table highlighted. If the data isn't in a clean table, click Add Table Using Examples and type a few values from the page; Power Query finds the rest by pattern.
  5. Click Load to put the data on a sheet, or Transform Data to clean it in the Power Query Editor first.
  6. To update the data later, click Data > Refresh All.

A few requirements: the Web connector needs Microsoft's WebView2 runtime, and the suggested tables and "examples" features come with a Microsoft 365 subscription. Microsoft's list of Power Query sources by Excel version includes Web for Excel 2016 or later on Windows, but not for Excel for Mac.

When Excel web scraping with From Web breaks

From Web is excellent for a Wikipedia table or a statistics page. These are the cases where it stops helping:

  • Pages that build their data with JavaScript. Product grids, maps and infinite feeds often load their content after the page opens, through separate API calls. The connector may see an empty shell, or only the first batch of results.
  • Sites behind a sign-in form. The connector authenticates with Anonymous, Windows, Basic, Web API or organizational-account credentials (Microsoft Learn). A site where you log in through a web form isn't one of those.
  • Pagination. One query reads one URL. To collect 20 result pages, you write a Power Query function that builds each page's URL and combines the results, and you maintain it when the site changes its URLs.
  • Bot protection. Excel sends the requests from your own computer and IP address. Sites that rate-limit or challenge automated visitors answer with errors or a challenge page instead of data.
  • Data that isn't a table. Places on a map, reviews or job cards rarely sit in an HTML table. "Add table using examples" can help, but it breaks when the page layout changes.

For any of these, let a scraper collect the data and give Excel a clean file.

Method 3: scrape data from website to Excel with a ready-made scraper

The Scrape.ly Store has 568 ready-made scrapers for specific sites, from Google Maps and Amazon to LinkedIn and Zillow. Each one is built for its site, runs in the cloud with Scrape.ly proxies, and writes clean rows to a dataset you can export as Excel. Here's the whole flow with the Google Maps Scraper:

  1. Open the scraper in the Store and pick a preset. We used Restaurants in Konstanz, 10 places.
  2. Change the search term and location to yours, and click Start.
  3. When the run has finished, click Export, choose Excel as the format, and pick the columns under Select fields.
  4. Click Download. You get an .xlsx file with one sheet named Data.

Our run returned 10 places in 5.7 seconds for $0.0369. With eight fields selected, the first five rows of the sheet look like this:

title categoryName totalScore reviewsCount street city phone website
The Dom Italian restaurant 4.7 1136 Brückengasse 1 Konstanz +49 7531 5847369 https://thedom-konstanz.de/
Constanzer Wirtshaus German restaurant 4.4 7521 Spanierstraße 3 Konstanz +49 7531 3630130 http://www.constanzer-wirtshaus.de/
Chu Minh Restaurant Asian restaurant 4.7 249 Frieda-Sigrist-Weg 1 Konstanz +49 7531 9325998 https://www.chuminh-restaurant.de/
Restaurant Zur Wendelgard German restaurant 4.7 848 Inselgasse 5 Konstanz +49 7531 917488 http://www.zur-wendelgard.de/
Brasserie Chez Léon Brasserie 4.6 1754 Zollernstraße 1 Konstanz +49 7531 282728 http://chezleon.de/

These are businesses, so their public listing data is shown as Google Maps shows it. Each place actually has 40 top-level fields. Nested ones turn into several columns in the Excel file: location becomes location/lat and location/lng, and lists such as openingHours become openingHours/0/day, openingHours/0/hours and so on. That's why picking fields first keeps the sheet readable. The full walkthrough of this scraper is in our Google Maps scraping tutorial.

Download the Excel file with the API

Every run's dataset is also available over the API. Add format=xlsx and the fields you want (token from Settings → API & Integrations):

shell
curl -o konstanz-restaurants.xlsx \
  -H "Authorization: Bearer $SCRAPELY_TOKEN" \
  "https://api.scrape.ly/v2/actor-runs/RUN_ID/dataset/items?format=xlsx&fields=title,categoryName,totalScore,reviewsCount,street,city,phone,website"

Or in Python (pip install scrapely-client-python), run the scraper and save the workbook in one script:

python
import os
from scrapely_client import ScrapelyClient

client = ScrapelyClient(os.environ["SCRAPELY_TOKEN"], api_url="https://api.scrape.ly")

run = client.actor("cornerledger/google-maps-scraper").call(
    run_input={"searchStringsArray": ["restaurant"], "locationQuery": "Konstanz", "maxCrawledPlacesPerSearch": 10}
)
xlsx = client.dataset(run.default_dataset_id).get_items_as_bytes(item_format="xlsx")
with open("konstanz-restaurants.xlsx", "wb") as f:
    f.write(xlsx)

The same parameters work on any dataset; the Datasets API docs list them all, including clean, omit and unwind.

Load a Scrape.ly export straight into Excel

Downloading a file is fine once. For a workbook that updates itself, point Excel's own web import at the export URL. There's one detail to get right: the Scrape.ly API reads your key only from the Authorization header, never from a ?token= in the URL, and the From Web dialog doesn't offer that header. You have two options.

Option A: a signed URL in From Web. A signed URL downloads the items without any key, and it always expires. Create one with the JavaScript client (client.dataset(id).createItemsPublicUrl({ expiresInSecs: 24 * 3600 }) signs it for 24 hours), add &format=xlsx to it, and paste it into Data > From Web with Anonymous access. This suits a report you hand to someone for a day or two; after the URL expires, refresh stops working.

Option B: a refreshable query with a read-only key. In Excel, choose Data > Get Data > From Other Sources > Blank Query, open Advanced Editor, and paste this M code. Web.Contents accepts request headers (Microsoft Learn), so the key travels in the header:

Text
let
    Source = Web.Contents(
        "https://api.scrape.ly/v2/actor-runs/RUN_ID/dataset/items?format=xlsx&clean=true",
        [Headers = [Authorization = "Bearer YOUR_READ_ONLY_KEY"]]
    ),
    Book = Excel.Workbook(Source, null, true),
    Data = Book{[Item = "Data", Kind = "Sheet"]}[Data],
    Places = Table.PromoteHeaders(Data, [PromoteAllScalars = true])
in
    Places

Click Done, choose Anonymous if Excel asks how to connect, then Close & Load. Data > Refresh All reloads the data from then on. The key is stored in the workbook, so use a dedicated key: create one under Settings → API keys with the Read only preset and an expiry date, and revoke it the moment the file leaves your team (API keys docs).

To keep the sheet current, schedule the scraper (for example every Monday) and load the newest run: the Actors API has a runs/last shortcut for exactly that, described in the Actors API docs. Runs keep their results for 2 days on the free plan and 31 to 90 days on paid plans. For data you need longer, copy it into a named dataset, which is kept until you delete it.

How Scrape.ly does it

  • 568 ready-made scrapers. Google Maps, Amazon, LinkedIn, Zillow, Google News and hundreds more, each built for its site, so you don't write selectors or pagination logic.
  • Excel is a first-class export. XLSX from the console in two clicks, or format=xlsx on any dataset or run, with field selection.
  • Refresh without copy-paste. Schedules collect fresh data, and a Power Query pointed at the API puts it in your workbook. Prefer Google Sheets? An automation writes every successful run into a sheet you share with Scrape.ly (integrations docs).
  • Predictable cost. You pay per result: our 10 places cost $0.0369, and 1,000 places cost $3.60 in place fees plus platform usage. The free plan includes $5 of usage every month with no credit card, and a maximum charge per run caps every job.

FAQ

Can Excel scrape data from a website automatically?

Yes, for simple pages: import the page with Data > From Web and refresh it with Data > Refresh All. For sites that load data with JavaScript, need many pages or block bots, run a scraper on a schedule and load its Excel export into the workbook with Power Query.

How do I scrape a website that uses JavaScript into Excel?

Use a scraper that renders or reads the site's data for you, then export the result as XLSX. On Scrape.ly, pick the site's scraper in the Store, run it, and click Export > Excel, or download format=xlsx from the API.

Does Excel for Mac have From Web?

Microsoft's list of Power Query sources for Excel for Mac doesn't include Web. On a Mac, download the Excel file from Scrape.ly and open it, or send results to Google Sheets with an automation.

What is the best way to do web scraping in Excel without coding?

For a static table, Excel's From Web. For anything else, a ready-made scraper with an Excel export: no selectors, no VBA, and the same file layout every run.

Collecting publicly available data is generally lower risk, but the site's terms and privacy law still apply. Scrape.ly Store scrapers only collect publicly available data any visitor can see. Personal data (names, emails, phone numbers of individuals) needs a lawful basis under the GDPR or the CCPA; this is not legal advice.

  • excel
  • power query
  • spreadsheets
  • no code
  • api

About the author

The team behind Scrape.ly

Scrape.ly is the web data platform from TeraShift GmbH in Switzerland, powered by Evomi: ready-made scrapers in the Scrape.ly Store, a cloud runtime, an API with JavaScript and Python SDKs, proxies, a hosted anti-bot browser and an MCP server for AI agents.

//Keep reading\\

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.