Google Sheets Import & Export (Reliable)
Pricing
$0.50 / 1,000 row writtens
Google Sheets Import & Export (Reliable)
Pricing
$0.50 / 1,000 row writtens
Rating
0.0
(0)
Developer
ensorcelling _melilot
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Send the results of any Apify Actor to Google Sheets, or pull a sheet into a dataset. It's built to not fail:
- Rate limits are retried automatically. Google allows about 60 writes a minute. When you hit that, this Actor waits and retries instead of crashing with nothing written.
- Append really appends. New rows go under your existing data, and your columns never get reshuffled. New fields become new columns at the end.
- Upsert by key. It updates rows whose
idorurlalready exists and adds the rest, so you can run it daily and get no duplicates. - Checks the cell limit before writing. If the data won't fit in Google's 10M-cell limit, you get a clear message and your sheet is left untouched. Nothing gets half-written.
- No surprise conversions. By default values are written exactly as they are, so
1.10stays1.10and IDs don't turn into dates. - Long values are safe. Text over Google's 50,000-character cell limit is truncated instead of failing the run.
Use it as an integration (most common)
- Open the Actor whose results you want in Sheets (for example Google Maps Scraper), then go to Integrations and choose Apify Actor.
- Pick this Actor, set the spreadsheet URL, key and write mode, and set Dataset ID to
{{resource.defaultDatasetId}}. - Every time that Actor finishes, its dataset lands in your sheet automatically.
You can also run it on its own with a Dataset ID, or paste JSON into Raw data.
One-time setup: a Google service account (about 2 minutes)
A service account is a robot Google user. It never expires and doesn't need you to log in again.
- Go to console.cloud.google.com. Create a project (any name) or pick an existing one.
- Enable the Google Sheets API: open APIs & Services, then Library, search "Google Sheets API" and click Enable.
- Go to APIs & Services, then Credentials, then Create credentials and choose Service account. Give it any name and click Done.
- Click the new service account, open Keys, choose Add key, then Create new key, then JSON. A
.jsonfile downloads. - Open that file, copy everything, and paste it into Google service account key. It's stored encrypted.
- Open your spreadsheet, click Share, and add the service account's email (it ends with
iam.gserviceaccount.com) as an Editor.
That's it. If you forget step 6, the run tells you exactly which email to share with.
Modes
| Mode | What it does |
|---|---|
| Export → Append | Adds rows under the existing data. Existing columns stay where they are. |
| Export → Replace | Clears the tab and writes fresh data. |
| Export → Upsert | Matches rows on Key column, updates matches (columns your data does not include are left as they are) and appends new rows. |
| Import | Reads the tab (first row = headers) into the run's dataset. A sheet shared as "Anyone with the link can view" can be imported with no key at all. |
The tab is created automatically if it doesn't exist.
Pricing
You pay per row written or read, and nothing for failed runs. See the pricing tab.
FAQ
Why a service account instead of "Sign in with Google"? Sign-in tokens expire and are the most common reason sheet exports break. A service account keeps working.
How big can it go? Up to Google's limit of 10 million cells per spreadsheet. The Actor checks this before writing.
Nested data? By default {"address": {"city": "Paris"}} becomes a column address/city. Turn off Flatten nested data to write JSON text instead.
Problem or feature request? Open an issue on the Issues tab.