Google Sheets Reader & Writer
Pricing
Pay per usage
Google Sheets Reader & Writer
Read any Google Sheet to JSON or write rows to a sheet — via Service Account auth. No OAuth blocking, no failed logins. Supports read, append, replace, modify, and backup modes. Includes safe replace, dry run, auto-create tab, and rate limit retry.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Manchitt Sanan
Actor stats
0
Bookmarked
0
Total users
0
Monthly active users
18 hours ago
Last modified
Categories
Share
Read any Google Sheet to structured JSON, or append rows from JSON to a sheet. No OAuth. No "This App Is Blocked" errors. Uses Google Service Account authentication — set up once, works forever.
Why this exists
The most popular Google Sheets actor on Apify fails ~52% of the time because Google blocks its unverified OAuth login screen. The developer has confirmed this is unsolvable with OAuth.
This actor uses Service Account authentication — the approach Google recommends for server-to-server access. No consent screens, no token expiry, no blocked apps.
Quick start
Reading a public sheet (no auth needed)
Set your sheet to File → Share → Anyone with the link → Viewer, then:
{"spreadsheetId": "YOUR_SHEET_ID","mode": "read"}
Reading a private sheet
{"spreadsheetId": "YOUR_SHEET_ID","mode": "read","serviceAccountKey": "{ ... paste your service account JSON here ... }"}
Appending rows
{"spreadsheetId": "YOUR_SHEET_ID","mode": "append","serviceAccountKey": "{ ... paste your service account JSON here ... }","rows": [{ "name": "John Smith", "email": "john@example.com", "status": "active" },{ "name": "Jane Doe", "email": "jane@example.com", "status": "pending" }]}
How to find your Spreadsheet ID
From your Google Sheet URL:
https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms/edit↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑This is your spreadsheetId
Service Account setup (one-time, ~5 minutes)
Only needed for private sheets and append operations.
Step 1 — Create a Google Cloud project
- Go to console.cloud.google.com
- Click New Project, give it any name, click Create
Step 2 — Enable the Sheets API
- In your project, go to APIs & Services → Library
- Search for Google Sheets API, click it, click Enable
Step 3 — Create a Service Account
- Go to APIs & Services → Credentials
- Click Create Credentials → Service Account
- Give it any name (e.g.
apify-sheets), click Create and Continue - Skip the optional steps, click Done
Step 4 — Download the key
- Click the service account you just created
- Go to the Keys tab
- Click Add Key → Create new key → JSON
- A
.jsonfile downloads — open it and copy the entire contents
Step 5 — Share your sheet with the service account
- Open your Google Sheet
- Click Share
- Paste the service account email (looks like
apify-sheets@your-project.iam.gserviceaccount.com) - Set role to Editor (for append) or Viewer (for read-only)
- Click Send
Step 6 — Paste the JSON key into the actor input
Paste the full contents of the downloaded .json file into the serviceAccountKey field.
Input
| Field | Type | Required | Description |
|---|---|---|---|
spreadsheetId | string | Yes | The ID from your Google Sheet URL |
mode | string | Yes | "read" or "append" |
range | string | No | Sheet tab name or A1 range (default: first sheet) |
serviceAccountKey | string | Conditional | Required for private sheets and all appends. Full JSON key contents. |
rows | array | Conditional | Required for append. Array of objects matching your column headers. |
Output
Read mode
{"spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms","mode": "read","rowCount": 150,"columns": ["name", "email", "status"],"data": [{ "name": "John Smith", "email": "john@example.com", "status": "active" },{ "name": "Jane Doe", "email": "jane@example.com", "status": "pending" }],"status": "success","error": null}
Append mode
{"spreadsheetId": "1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgVE2upms","mode": "append","rowsAppended": 2,"updatedRange": "Sheet1!A152:C153","status": "success","error": null}
Pricing
$0.003 per successful operation (pay-per-event pricing).
- Failed operations (auth errors, invalid IDs, inaccessible sheets) are not charged.
- 1,000 operations = $3.00
- 10,000 operations = $30.00
Limitations
- Append mode requires at least one existing row in the sheet to read column headers from. If the sheet is empty, column headers are taken from the keys of the first row in your input.
- Maximum sheet size is limited by Google Sheets' own 5 million cell limit.
- Service Account must be shared on the specific sheet — sharing at the Drive folder level is also supported.
- This actor does NOT use OAuth. It cannot access sheets you haven't explicitly shared with the service account email.
Related Tools by manchittlab
- Broken Link Checker — Recursively crawl your website and find every broken link, 404, redirect, and timeout.
- Email Validator Pro — Bulk email validation with SMTP check, 5,300+ disposable domains, deliverability scoring.
- Lighthouse Auditor — Batch Lighthouse audits for performance, SEO, accessibility, and Core Web Vitals.
- Image Processor — Batch resize, convert to WebP/AVIF, compress, watermark. Powered by sharp.
- Domain Age Checker — Bulk RDAP domain age, registration, and expiration lookup.
- Tech Stack Detector — Detect frameworks, CMS, analytics, CDN, and 100+ technologies for any URL.
Run on Apify
No setup needed. Click above to run in the cloud. $0.003 per operation.
