TL;DR
Three ways to get data off a web page and into Excel, and they fail in different places:
- Copy-paste — works on simple HTML tables, collapses on anything modern. Merged cells, sticky headers, and virtualized rows produce a mess you spend longer fixing than you'd have spent typing it.
- Excel's "From Web" / Power Query — genuinely good for static, public HTML tables. It fetches the URL from Excel, which means it cannot see JavaScript-rendered content and cannot see anything behind a login. Most modern sites are one or both.
- A browser extension — reads the page after it renders, in your existing session, and exports XLSX directly.
ScrapeMaster is the third option: open the page, click the icon, and it auto-detects the repeating structure in a couple of seconds and gives you an editable table. Rename columns, drop the ones you don't want, turn on pagination if the data spans pages, then export to XLSX, CSV, JSON, or straight to the clipboard for pasting into Excel or Sheets.
It works on JavaScript-heavy sites because it runs after render, and on logged-in pages because it runs in your browser. No coding, no selectors, no account, no row limits.
Why copy-paste breaks
It's the default for a reason — it's right there — and it works fine on a plain <table>. Which almost nothing is anymore.
Virtualized rows. Long tables in modern frameworks only keep the visible rows in the DOM, recycling elements as you scroll. Select-all captures what's currently rendered. You get 40 rows out of 4,000 and no warning.
Sticky headers. Frozen headers are often a separate element overlaying the table. Copy the table and you get no headers, or headers repeated at every scroll position.
Merged and nested cells. Paste into Excel and the column alignment shifts partway down. Finding where takes longer than the copy saved.
Formatting garbage. Currency symbols, thousands separators, non-breaking spaces, and inline SVG icons arrive as text. Every numeric column lands as text and needs cleaning before it'll sum.
Multi-page data. Copy-paste is per-page. Twenty pages is twenty operations plus twenty alignment checks.
Why Power Query hits a wall
Excel's Data → From Web is a real tool and worth knowing. Give it a URL and it parses HTML tables into a query you can refresh.
Its limits are structural, not incidental:
It can't run JavaScript. Power Query fetches the HTML the server returns. If the page builds its table client-side from an API call — React, Vue, Angular, most dashboards, most modern catalogues — the fetched HTML contains an empty container. Power Query sees nothing and reports no tables found.
It can't authenticate to most sites. It has its own connection with its own credential handling, not your browser session. Cookie-based logins, SSO flows, and MFA are effectively out of reach. Any internal tool, admin panel, or account page is inaccessible.
It only recognizes <table> elements. Data laid out as a CSS grid, a list of cards, or a set of <div>s — which is most product listings, job boards, and directories — isn't a table as far as Power Query is concerned.
It's fragile across layout changes. Queries reference table indexes and column positions. A site redesign silently breaks the refresh.
Where Power Query genuinely wins: static public pages with real HTML tables that you want to refresh on a schedule. Wikipedia tables, government statistics pages, reference data. If that's your case, use it — the scheduled refresh is a real advantage an extension doesn't offer.
The browser-extension route
The difference is where the reading happens. An extension runs inside the page after the browser has rendered it, so it sees exactly what you see: JavaScript executed, data loaded, session authenticated.
The workflow
1. Open the page with the data on it. Search results, a product listing, a job board, a directory, an internal report. Get it to the state you want — filters applied, sort order set.
2. Click the extension. It opens in a side panel and analyzes the page for repeating patterns, usually in two to four seconds. An editable table appears with columns named from context — "Product", "Price", "Rating" rather than "column_1".
3. Fix the columns. Rename to match your spreadsheet's schema. Delete the ones you don't need — doing it here is much faster than deleting columns in Excel afterwards.
4. Handle multiple pages. Enable pagination and it detects the pattern: next-page buttons, load-more buttons, numbered pagination, or infinite scroll. Extraction walks through with progress shown in the panel.
5. Add detail-page fields if you need them. "Follow detail pages" opens each row's link in a background tab, pulls the extra fields you define, and merges them back into the main table. This is how you get a listing's summary data and its detail data in one export.
6. Export to XLSX. Or CSV, or JSON, or copy to clipboard for a direct paste into Excel or Sheets.
Why XLSX rather than CSV
Both are offered; XLSX is usually the better choice into Excel.
CSV is a text format with no type information, so Excel guesses on import — and guesses badly in predictable ways. Leading zeros vanish from postal codes and product IDs. Long numbers become scientific notation. Dates get reinterpreted according to your locale, so 07/08/2026 silently means different days in London and Chicago.
XLSX carries type information, so the values you saw are the values you get. When you need CSV — for a CRM import, a database load, or a script — take CSV. When the destination is Excel, take XLSX.
Handling the awkward cases
Infinite scroll. Scroll to load the rows you want before extracting, or let pagination handle the scrolling. Either way, only loaded content exists — there's no way to extract rows the page hasn't fetched.
Login-protected pages. These work, because the extension uses your already-authenticated session. This is the category Power Query and every server-side tool structurally cannot reach.
Data split across a listing and its detail pages. Use follow-detail. Be mindful that it multiplies your request count — a 200-row listing means 200 background page loads — so pace it on sites with aggressive rate limiting.
Wide tables that you also want as a PDF. Once you have the XLSX, if you need a fixed shareable version, export to CSV and convert it with Convert: Anything to PDF — it renders CSV as a formatted table. Set landscape and A3 or Ledger for wide data, or the right-hand columns clip. More on that in fitting a wide table on one PDF page.
Data that needs to land in Google Sheets. Copy to clipboard and paste — it preserves the column structure. The Google Sheets workflow covers this in more depth.
Comparison
| Method | JS-rendered sites | Logged-in pages | Multi-page | Direct XLSX | Coding | Cost |
|---|---|---|---|---|---|---|
| Copy-paste | Partly | Yes | Manual | No | No | Free |
| Power Query | No | Rarely | With effort | Native | Light M code | Included |
| ScrapeMaster | Yes | Yes | Yes | Yes | No | Free |
| Octoparse | Yes | Yes | Yes | Yes | No | Free tier, then paid |
| ParseHub | Yes | Yes | Yes | Yes | No | Free tier, then paid |
| Web Scraper.io | Yes | Yes | Yes | CSV | Sitemap config | Free tier, cloud paid |
| Import.io | Yes | Yes | Yes | Yes | No | Enterprise |
| Python + pandas | With Selenium/Playwright | With work | Yes | Yes | Substantial | Free |
Two dimensions actually separate these. Where it runs — in your browser (sees what you see) versus on a server (sees what an anonymous fetch returns). And what it costs at volume — most of the hosted tools are free until you have enough rows to matter, then aren't.
The Python route deserves respect: it's the most flexible option and the right answer for anything recurring and complex. It's also a multi-hour setup for a task that takes one minute in a browser, which makes it the wrong tool for "I need this list in Excel before the meeting."
Two things to check before you export
Is the data actually public? Extracting from pages you're authorized to see is fine. Public product listings, public directories, your own account's data, your company's internal tools. Public factual data at a reasonable rate is well-established as lawful — our full guide covers the boundaries.
Does it contain personal data? Names, individual email addresses, and profile links are personal data under GDPR and CCPA, with obligations attached, regardless of how you collected them. Org-level contact data — company name, switchboard, info@ — avoids most of it. If you're building a lead list, the decision-maker guide covers where the line sits.
Frequently asked questions
How do I export website data to Excel?
Open the page in Chrome, click ScrapeMaster, and it auto-detects the repeating data structure in a few seconds. Rename or remove columns, enable pagination if the data spans multiple pages, then export directly to XLSX. No coding or CSS selectors required.
Why doesn't Excel's "From Web" work on most sites?
Power Query fetches raw HTML from the server and can't execute JavaScript, so any page that builds its table client-side returns an empty container. It also can't use your browser's login session, which rules out anything behind authentication, and it only recognizes real <table> elements — not the card and grid layouts most listings use.
Can I export data from a page that requires a login?
Yes, with a browser extension, because it runs inside your already-authenticated session and sees the page as you do. Server-side tools including Power Query generally cannot, since they have no session on the site.
Should I export as XLSX or CSV?
XLSX for Excel — it carries type information, so leading zeros survive, long numbers don't become scientific notation, and dates aren't reinterpreted by your locale. CSV for CRM imports, database loads, and scripts, where a plain text format is what the destination expects.
How do I export data spread across many pages?
Enable pagination before extracting. The extension detects next-page buttons, load-more buttons, numbered pagination, and infinite scroll, then walks through them with live progress. You get one combined table rather than one file per page.
Can I get data from both a listing page and each item's detail page?
Yes — that's the follow-detail feature. It opens each row's link in a background tab, extracts the additional fields you've defined, and merges them into the main table. Bear in mind it multiplies your request count, so use it deliberately on rate-limited sites.
Does copy-paste really lose data on long tables?
Frequently, yes. Modern long tables virtualize their rows, keeping only the visible ones in the DOM. Select-all copies what's currently rendered — you can silently get 40 rows out of 4,000 with no indication anything is missing.
Is exporting website data to Excel legal?
Collecting publicly displayed factual data at a reasonable rate is generally lawful in the US, EU, and UK. It gets complicated when you bypass authentication, collect personal data without a lawful basis, or breach terms you explicitly accepted. Extracting from pages you're authorized to view, at browsing speed, is the well-established case.
Bottom line
Copy-paste fails on virtualized rows and modern layouts. Power Query is solid for static public HTML tables with scheduled refresh and structurally can't reach JavaScript-rendered or logged-in pages, which is most of what people actually need.
A browser extension sidesteps both because it reads the page after render, inside your session. Open, click, fix the columns, export XLSX. About a minute, no configuration to maintain, and it doesn't break when the site redesigns.
ScrapeMaster is free with no row limits, exports XLSX, CSV, JSON, and clipboard, and keeps extracted data local in your browser. For the fixed shareable version afterwards, Convert: Anything to PDF turns a CSV into a properly formatted table.
When the spreadsheet is done: CineMan AI shows IMDb and Rotten Tomatoes ratings on Netflix, Prime Video, and Disney+.