Dataset → Google Sheets Incremental Sync
Under maintenancePricing
from $0.00005 / actor start
Dataset → Google Sheets Incremental Sync
Under maintenanceSync Apify Dataset rows to Google Sheets and automatically remember the last synced Dataset offset. Also supports append, replace, and upsert.
Pricing
from $0.00005 / actor start
Rating
0.0
(0)
Developer
Starshape Tools
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Sync an Apify Dataset to Google Sheets without manually tracking offsets.
The recommended mode remembers the last successfully synced Dataset offset in a persistent Apify Key-Value Store. Schedule the Actor every hour, every day, or after your scraper finishes, and only new Dataset items are appended.
What problem does it solve?
Typical workflow:
Scraper → Apify Dataset → Google Sheets
A normal append workflow can duplicate old rows on every scheduled run. This Actor keeps a checkpoint and only reads items after the previous successful sync.
Run 1: Dataset items 0–999 → Sheets → checkpoint = 1000Run 2: Dataset items 1000–1049 → Sheets → checkpoint = 1050Run 3: no new items → no write
The checkpoint moves only after the Google Sheets write succeeds.
Features
- Incremental Dataset → Google Sheets sync
- Automatic persistent offset checkpoint
- No manual offset management
- Append, replace, and upsert one-shot modes
- Google Service Account authentication
- Retry with exponential backoff for Google 429/5xx
- RAW writes to avoid interpreting incoming strings as formulas
- Dry-run validation
- Configurable batch and row limits
- Machine-readable run summary
Recommended setup
1. Create a Google Service Account
In Google Cloud:
- Create/select a project.
- Enable Google Sheets API.
- Create a Service Account.
- Create a JSON key.
- Copy the Service Account
client_email.
2. Share the spreadsheet
Share the target Google Sheet with the Service Account client_email as Editor.
3. Run incremental sync
Set:
operation:incremental_appendsourceDatasetId: your Apify Datasetspreadsheet: target Sheet URL or IDsheetName: target tabserviceAccountJson: Service Account JSON
The first successful run starts at offset 0. Later runs continue from the stored offset automatically.
Resetting the checkpoint
Set resetCheckpoint to true for one run.
This restarts incremental sync from Dataset offset 0.
Warning: restarting from zero can intentionally append duplicates if your sheet already contains those rows.
Checkpoint identity
By default, the Actor derives a checkpoint from:
sourceDatasetId + spreadsheetId + sheetName
Use syncKey if you need an explicit stable checkpoint identifier.
Other modes
Append
Adds all incoming rows.
Replace
Clears values from the target tab and writes the incoming table again.
Upsert
Merges rows by keyColumn.
For complex spreadsheets with formulas inside the data grid, use Incremental append instead of Replace/Upsert.
Input source
Incremental append requires an Apify Dataset.
Append, Replace, and Upsert can use either:
sourceDatasetId, or- inline
rows.
Privacy
The Google Service Account credential is a secret Actor input. Do not put credentials into the README, issues, logs, or sample outputs.
Limitations
- The target spreadsheet and tab must already exist.
- Do not run two incremental syncs for the exact same checkpoint concurrently; concurrent runs can append duplicate rows.
- Upsert rewrites the tab's data grid and is intended for plain data tables.
- Google Sheets API quotas still apply.
- This Actor does not create or manage Google Cloud credentials for you.
Suggested automation
Create an Apify Task with your saved input, then add a schedule.
Scraper runs↓Dataset grows↓Scheduled Incremental Sync↓Only new rows reach Google Sheets
Output
Each run writes a summary with:
- source offset
- next offset
- source row count
- rows written
- target sheet
- duration
- status
Statuses include:
SYNC_COMPLETENO_NEW_ROWSDRY_RUN_OK