Google Sheets Export & Scraper avatar

Google Sheets Export & Scraper

Pricing

$2.00 / 1,000 sheet exports

Go to Apify Store
Google Sheets Export & Scraper

Google Sheets Export & Scraper

Export any public Google Sheet to flat JSON rows, a full xlsx workbook, or both. Typed values, multi-tab, hyperlinks and formulas optional. No Google Cloud project, no OAuth, no API key — just paste a sharing URL.

Pricing

$2.00 / 1,000 sheet exports

Rating

0.0

(0)

Developer

Sourabh Kumar

Sourabh Kumar

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

3

Monthly active users

3 days ago

Last modified

Share

Overview

Export any public Google Sheet to flat JSON rows, a full xlsx workbook, or both — with no Google Cloud project, no OAuth, no service account. Just paste a sharing URL.

$2 per 1,000 sheet tabs exported. No per-run fee in rows mode.

Works on any sheet shared as "Anyone with the link can view," in any language, hosted in any region.


Why this scraper (vs. official API or competitors)

ConcernGoogle Sheets APIOther Apify actorsGoogle Sheets Export
OAuth or service account required?YesOften yesNo
Multi-tab export in a single run?Yes (with code)Usually one-tab-per-runYes, native
Hyperlinks + cell formulas alongside values?Partial (separate calls)RarelyYes, opt-in
Full xlsx workbook with formatting?No (rebuild yourself)RareYes
Per-run start fee?n/aOften $0.05 to $0.20None
Price per 1,000 resultsFree (with quota + setup cost)Often split across 2 to 4 actors$2

The free public gviz/tq endpoint is great if your needs end at one tab to CSV. The moment you need multiple tabs, typed values, hyperlinks, formulas, or a real xlsx — you're writing glue. This Actor is that glue, billed by the tab.


What data can you extract?

📑 Sheet name🔢 Typed cell values📊 All columns from your sheet🔗 Hyperlinks (opt-in)
➗ Cell formulas (opt-in)📦 Full xlsx workbook📋 Workbook metadata🗂 Tabs (gid + hidden state)
🏷 Named ranges🆔 Spreadsheet ID📝 Workbook title🎯 Server-side query (SQL-like)

rows mode

One dataset item per spreadsheet row. Every column from your sheet becomes a field on the item, with the original type preserved (numbers stay numeric, dates stay dates). Plus:

  • sheetName — which tab the row came from.
  • _links — clickable URLs from =HYPERLINK() cells. Only present when includeHyperlinks: true.
  • _formulas — original cell formulas like =SUM(B:B). Only present when includeFormulas: true.

workbook mode

Two files in the key-value store:

  • workbook.xlsx — the full xlsx as Google's /export?format=xlsx returns it: formulas, formatting, hyperlinks, embedded charts.
  • metadata.json — workbook title, spreadsheetId, every tab (name + gid + hidden), named ranges.

How to scrape Google Sheets: step by step

  1. Create a free Apify account. Takes 30 seconds, no card needed.
  2. Open Google Sheets Export & Scraper in the Apify Console.
  3. Paste the sharing URL of any public Google Sheet. Make sure the sheet is set to "Anyone with the link → Viewer."
  4. Click Start. Most runs finish in under 30 seconds; large workbooks take a minute.
  5. Export as JSON, CSV, or Excel — or fetch via API. xlsx files come straight from the key-value store.

How much does Google Sheets Export & Scraper cost?

Pay-per-result. Three numbers to remember:

  • Per 1,000 results: $2.00 (one result = one sheet tab exported).
  • Free-plan yield: roughly 2,500 tabs on Apify's $5/month free credits.
  • Starter-plan yield: about 14,500 tabs on the $29/month Starter plan.

No per-run fee in rows mode. workbook and both modes add $0.005 per run for the xlsx fetch — a 3-tab both run runs $0.011 total. Compute is on the house in pay-per-event mode.


Input

{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"outputMode": "rows",
"sheetNames": ["Items"],
"maxRows": 1000,
"includeHyperlinks": true,
"includeFormulas": false,
"query": "select A,B,C where C > 100 order by C desc",
"range": "A1:C500",
"headers": 1
}
FieldTypeDefaultNote
spreadsheetUrlstringFull URL of a public sheet (/d/{id}/edit). Published URLs (/d/e/...) are rejected.
outputModeenumrowsrows, workbook, or both.
sheetNamesstring[]all tabsExport only these tabs. Ignored in workbook mode (Google's xlsx export always includes every tab).
maxRowsintegerunlimitedCap rows per tab. Ignored when query is set.
includeHyperlinksbooleanfalseAdd _links field per row. Triggers one xlsx fetch.
includeFormulasbooleanfalseAdd _formulas field per row. Triggers one xlsx fetch.
querystringGoogle Visualization Query Language pass-through.
rangestringA1-notation cell range, e.g. A1:C100.
headersinteger (0–10)autoHow many leading rows are headers. 0 = headerless (Column A, Column B, ...).

Recipes (ready-to-paste)

Export a single tab to JSON

{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"sheetNames": ["Items"]
}

Back up an entire workbook as xlsx

{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"outputMode": "workbook"
}

Pull the first 100 rows of every tab

{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"maxRows": 100
}

Filter server-side with a SQL-like query

{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"query": "select A,B,C where C > 100 order by C desc limit 25"
}
{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"includeHyperlinks": true
}

Include cell formulas alongside values

{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"includeFormulas": true
}

Slice a specific cell range

{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"range": "A1:C500"
}

Both modes in one run (rows + xlsx backup)

{
"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk/edit",
"outputMode": "both",
"includeHyperlinks": true
}

Output

rows mode — dataset item

{
"sheetName": "Items",
"edition": "2015.10.21",
"position": 1,
"headline": "Every place name in the United States.",
"text": "Sometimes, bureaucracy creates poetry. Since 1890, the U.S. Board on Geographic Names has been cataloguing, standardizing, and promulgating official names for the places we hike, swim, work, and call home...",
"links": "http://geonames.usgs.gov/index.html\nhttp://geonames.usgs.gov/domestic/index.html",
"hattips": "https://twitter.com/emilymbadger/status/653982851386310656",
"_links": {
"hattips": "https://twitter.com/emilymbadger/status/653982851386310656"
},
"_formulas": null
}

_links and _formulas are absent from the row unless their flag is enabled and the row actually carries a hyperlink or formula. They are never emitted as literal null.

workbook mode — key-value store

workbook.xlsx is the binary file. metadata.json looks like:

{
"title": "Data Is Plural — Structured Archive",
"spreadsheetId": "1wZhPLMCHKJvwOkP4juclhjFgqIY8fQFMemwKL2c64vk",
"tabs": [
{ "name": "Items", "gid": "0", "hidden": false },
{ "name": "Notes", "gid": "1234567", "hidden": false },
{ "name": "Community-Built Tools", "gid": "987654", "hidden": false }
],
"namedRanges": [{ "name": "AllData", "range": "" }],
"filterViews": [],
"pivotTables": [],
"tables": []
}

filterViews, pivotTables, and tables are reserved for a future release; emitted as empty arrays today.


Field availability by mode

Field grouprowsworkbookboth
Dataset items (one per row)
sheetName on each item
Typed cell values per column
_links field (when enabled)
_formulas field (when enabled)
workbook.xlsx in key-value store
metadata.json (tabs, namedRanges, title)
Server-side query and range✅ (rows side only)
Per-tab pricing event fires
Workbook pricing event fires

FAQ

How much does Google Sheets Export & Scraper cost?

Google Sheets Export & Scraper uses pay-per-result pricing. You pay $2.00 for 1,000 results (one result = one sheet tab exported). The Apify Free plan gives you $5 in usage credits a month, enough for around 2,500 tabs. If you run regularly, the $29/month Starter plan covers about 14,500 tabs.

No subscription lock-in. Pause whenever.

Scraping public data is generally allowed in the US and most of the EU, as long as you don't collect personal data covered by GDPR or CCPA without a lawful basis. This Actor only touches sheets the owner has explicitly published as "Anyone with the link can view" — but how you use the output is on you.

Apify's full breakdown: Is web scraping legal?.

Can I integrate Google Sheets Export & Scraper with other tools?

Push results into Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Apify treats every actor as a webhook source, so anything that consumes webhooks or pulls from an API works.

Full list: Apify integrations.

Can I use Google Sheets Export & Scraper with the Apify API?

Yes. Every run is available via the Apify REST API:

curl -X POST "https://api.apify.com/v2/acts/sourabhbgp~google-sheets-export/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"spreadsheetUrl": "https://docs.google.com/spreadsheets/d/.../edit"}'

Docs: Apify API reference.

Can I use Google Sheets Export & Scraper through an MCP Server?

Yes. Apify ships an MCP server that exposes every actor as a tool, so Claude Desktop, Cursor, and any other MCP-capable client can call Google Sheets Export & Scraper. Setup: Apify MCP docs.


Your feedback

Bug, missing field, or odd behavior? Drop a note in the Issues tab. Reports go to a human and fixes usually ship the same week.