Google Sheets to JSON & CSV - Public Sheet & Excel URL Reader avatar

Google Sheets to JSON & CSV - Public Sheet & Excel URL Reader

Pricing

$0.10 / 1,000 row exporteds

Go to Apify Store
Google Sheets to JSON & CSV - Public Sheet & Excel URL Reader

Google Sheets to JSON & CSV - Public Sheet & Excel URL Reader

Turn any public Google Sheet, Excel, ODS or CSV URL into clean JSON rows, CSV and an API. All tabs, typed values, header detection. No Google login, OAuth or API key. $0.10 per 1,000 rows.

Pricing

$0.10 / 1,000 row exporteds

Rating

0.0

(0)

Developer

Wood Between Studio

Wood Between Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Features

Limited permissions

Share

Google Sheets to JSON & CSV: Public Sheet & Excel URL Reader

Turn any public Google Sheet, Excel (.xlsx/.xls), OpenDocument (.ods) or CSV link into clean JSON rows, CSV files and an API endpoint. No Google login, no OAuth, no service account and no API key. Paste the link and run.

Why use it?

  • Zero setup. Most Google Sheets tools need you to authorize a Google account first, and that is where they fail. This one reads any sheet shared as Anyone with the link or Published to the web, so there is nothing to connect.
  • Every tab or just one. Read all worksheets, pick tabs by name, or paste a link with #gid= to read only that tab.
  • Typed values. Numbers stay numbers, checkboxes become booleans and dates become ISO strings. Or choose formatted to get exactly what you see in the sheet.
  • Smart headers. Pick the header row, rename duplicates automatically, and optionally convert names to snake_case.
  • Files and API. Each tab is also saved as a CSV and a JSON file with direct download links. Schedule the Actor to keep a JSON API in sync with a spreadsheet your team edits.
  • Works with more than Google. Direct .xlsx, .xls, .ods and .csv URLs, Google Drive file links, Dropbox and OneDrive share links.
  • Clear errors. A private sheet gets a plain-English fix ("share it as Anyone with the link"), not a stack trace. Failed files are never charged.

Use cases

  • Use a Google Sheet as a lightweight CMS or database for a website, app or no-code tool
  • Feed spreadsheet data into Make, Zapier, n8n or your own code through the Apify API
  • Merge many public spreadsheets (price lists, directories, open data) into one dataset
  • Convert Excel files on the web to JSON or CSV in bulk

Input

FieldDefaultNotes
spreadsheetUrls(required)Google Sheets links or IDs, or direct spreadsheet file URLs
tabsallTab names to read
allTabsfalseRead every tab even if the link has #gid=
headerRow10 = no header (columns become A, B, C...)
valueModetypedtyped or formatted
skipEmptyRowstrue
normalizeHeadersfalseStudent Name becomes student_name
outputModerowsrows = one item per row, tabs = one item per tab
saveFilestrueCSV + JSON per tab in the key-value store
{ "spreadsheetUrls": ["https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit"], "normalizeHeaders": true }

Output

One item per row (default):

{ "student_name": "Alexandra", "gender": "Female", "class_level": "4. Senior", "home_state": "CA", "major": "English",
"extracurricular_activity": "Drama Club", "_tab": "Class Data", "_row": 2, "_spreadsheet": "https://docs.google.com/..." }

The SUMMARY record lists every spreadsheet and tab with column names, row counts and CSV/JSON download links.

How do I make my sheet readable?

In Google Sheets click Share > General access > Anyone with the link (Viewer), or File > Share > Publish to web. Nothing else is needed.

Pricing

$0.10 per 1,000 rows ($0.0001 per row). Platform usage is included. Failed or private files are free. Set a maximum charge per run for a hard cap.

Limits

  • Read-only: it does not write back to Google Sheets.
  • Formulas are returned as their calculated values.
  • Private sheets can't be read. That is by design: no Google account access is ever requested.
  • Files up to 200 MB.

Responsible use

Only read spreadsheets you have the right to use. The Actor never bypasses sharing settings or logins.

Support

Need write-back, filters or a different format? Open an issue on the Issues tab. We read every one.

Call it from curl, JavaScript or Python

You can run this Actor in the Apify Console with no code, or call it as an API from curl, JavaScript or Python. Replace YOUR_TOKEN with an Apify API token.

curl

curl "https://api.apify.com/v2/acts/wood-between-studio~google-sheets-reader/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"spreadsheetUrls": ["https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit"], "normalizeHeaders": true}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wood-between-studio/google-sheets-reader').call({
"spreadsheetUrls": [
"https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit"
],
"normalizeHeaders": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wood-between-studio/google-sheets-reader").call(run_input={
"spreadsheetUrls": [
"https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit"
],
"normalizeHeaders": true
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

You can also schedule the Actor, cap the spend per run, and send the dataset to Google Sheets, Slack or a webhook from the Console. Store page: apify.com/wood-between-studio/google-sheets-reader.