---
title: "Scrape Data From Website to Excel (3 Ways) | Scrape.ly"
description: "How to scrape data from website to Excel: Excel's From Web, where it breaks, and a scraper that exports XLSX and refreshes into your workbook."
url: https://scrape.ly/blog/scrape-data-from-website-to-excel
markdown: https://scrape.ly/blog/scrape-data-from-website-to-excel.md
---

[Guides](https://scrape.ly/blog/category/guides.md)

# 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.

[Scrape.ly Team The team behind Scrape.ly](https://scrape.ly/blog/author/scrapely-team.md)

- Published

  Oct 23, 2026

- 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](https://scrape.ly/media/scrape-data-from-website-to-excel.png?w=1080)

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](https://support.microsoft.com/en-us/excel/import-data-from-the-web-using-the-web-connector):

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](https://support.microsoft.com/en-us/office/power-query-data-sources-in-excel-versions-e9332067-8e49-46fc-97ff-f2e1bfa0cb16) 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](https://learn.microsoft.com/en-us/power-query/connectors/web/web)). 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](https://scrape.ly/store/cornerledger/google-maps-scraper.md):

1. Open the scraper in the [Store](https://scrape.ly/store.md) and pick a preset. We used [Restaurants in Konstanz, 10 places](https://scrape.ly/store/cornerledger/google-maps-scraper/presets/search-2.md).
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](https://scrape.ly/blog/how-to-scrape-google-maps.md).

### 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](https://scrape.ly/docs/api-datasets.md) 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](https://scrape.ly/docs/client-js.md) (`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](https://learn.microsoft.com/en-us/powerquery-m/web-contents)), so the key travels in the header:

```plaintext
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](https://scrape.ly/docs/api-keys.md)).

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](https://scrape.ly/docs/api-actors.md). 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](https://scrape.ly/docs/integrations.md)).
- **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.

### Is it legal to scrape data from a website into Excel?

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.

Scrape.ly Store Scrape Google Maps into Excel Run the Konstanz restaurants preset, then export the places as an Excel file with the columns you choose. $3.60 per 1,000 places.

[Try it free](https://scrape.ly/store/cornerledger/google-maps-scraper.md) [Browse the Store](https://scrape.ly/store.md)

About the author

[Scrape.ly Team](https://scrape.ly/blog/author/scrapely-team.md) 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.

- [Website](https://scrape.ly/index.md)

Keep reading

## More in Guides

- [![Pixel-art robot with an orange >\_ on its terminal head carries a row of data from a web page on the left to a spreadsheet marked with the green Google Sheets logo on the right](https://scrape.ly/media/scrape-website-to-google-sheets.png?w=750)](https://scrape.ly/blog/scrape-website-to-google-sheets.md)
  ### [IMPORTXML + Google Sheets: How to Scrape a Website Into a Spreadsheet (and Beyond)](https://scrape.ly/blog/scrape-website-to-google-sheets.md)
  [How to scrape a website into Google Sheets: IMPORTXML, IMPORTHTML, IMPORTDATA and IMPORTFEED with exact syntax and tested XPath on books.toscrape.com, Google's refresh rules, an Apps Script fetcher, and scheduled scrapes that write straight into your sheet.](https://scrape.ly/blog/scrape-website-to-google-sheets.md)
- [![Pixel-art robot with an orange >\_ on its terminal head carries a row of data from a web page on the left into a table on the right that is filling up row by row](https://scrape.ly/media/what-is-web-scraping.png?w=750)](https://scrape.ly/blog/what-is-web-scraping.md)
  ### [What Is Web Scraping? How It Works and What It Is Used For](https://scrape.ly/blog/what-is-web-scraping.md)
  [What is web scraping? The automated collection of data from websites into structured records. See how it works step by step with tested Python code, what teams use it for, how it differs from crawling, APIs and screen scraping, and how to do it without code.](https://scrape.ly/blog/what-is-web-scraping.md)
- [![Pixel-art robot with an orange >\_ on its terminal head pulls a data card out of a monitor showing the blue and yellow Python logo beside lines of code, and drops it into a crate](https://scrape.ly/media/web-scraping-python.png?w=750)](https://scrape.ly/blog/web-scraping-python.md)
  ### [Web Scraping With Python: A Complete 2026 Guide](https://scrape.ly/blog/web-scraping-python.md)
  [A complete guide to web scraping with Python: requests and BeautifulSoup, CSS selectors, pagination, CSV and JSON export, polite delays and retries, async httpx, Playwright for JavaScript pages, Scrapy, and how to run it all in the cloud. Every script tested on 23 October 2026.](https://scrape.ly/blog/web-scraping-python.md)

## 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.

[Get Started Free](https://my.scrape.ly/register) [Chat with Support](mailto:support@scrape.ly?subject=Question%20about%20Scrape.ly\&body=Hi%2C%20I%20have%20a%20question%20about%20Scrape.ly.)

No credit card. No setup calls.
