Google Sheets Reader & Writer avatar

Google Sheets Reader & Writer

Pricing

Pay per usage

Go to Apify Store
Google Sheets Reader & Writer

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

Manchitt Sanan

Maintained by Community

Actor stats

0

Bookmarked

0

Total users

0

Monthly active users

18 hours ago

Last modified

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

  1. Go to console.cloud.google.com
  2. Click New Project, give it any name, click Create

Step 2 — Enable the Sheets API

  1. In your project, go to APIs & Services → Library
  2. Search for Google Sheets API, click it, click Enable

Step 3 — Create a Service Account

  1. Go to APIs & Services → Credentials
  2. Click Create Credentials → Service Account
  3. Give it any name (e.g. apify-sheets), click Create and Continue
  4. Skip the optional steps, click Done

Step 4 — Download the key

  1. Click the service account you just created
  2. Go to the Keys tab
  3. Click Add Key → Create new key → JSON
  4. A .json file downloads — open it and copy the entire contents

Step 5 — Share your sheet with the service account

  1. Open your Google Sheet
  2. Click Share
  3. Paste the service account email (looks like apify-sheets@your-project.iam.gserviceaccount.com)
  4. Set role to Editor (for append) or Viewer (for read-only)
  5. 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

FieldTypeRequiredDescription
spreadsheetIdstringYesThe ID from your Google Sheet URL
modestringYes"read" or "append"
rangestringNoSheet tab name or A1 range (default: first sheet)
serviceAccountKeystringConditionalRequired for private sheets and all appends. Full JSON key contents.
rowsarrayConditionalRequired 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.

  • 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

Run on Apify

No setup needed. Click above to run in the cloud. $0.003 per operation.