---
title: "Zapier app setup · Scrape.ly Docs"
description: "Accept the Scrape.ly app invite in Zapier, add a Scrape.ly API key, then run Actors and tasks, send results to other apps, and start Zaps when runs finish."
url: https://scrape.ly/docs/zapier
markdown: https://scrape.ly/docs/zapier.md
---

# Zapier app

> Run Actors from Zaps, send results to other apps, and start Zaps when runs finish.

The Scrape.ly app for [Zapier](https://zapier.com) connects Actors to thousands of other apps without code. Start a run when something happens in another app, send results to a spreadsheet or CRM when a run finishes, or react to builds of your own Actors.

## Connect your account

1. Open the [Scrape.ly invite link](https://zapier.com/developer/public-invite/248314/591a8ea03fc5b7415ffaff26c5d3aa57/) and accept it. The app is private, so it only appears in Zapier after you accept.
2. In a Zap, add a Scrape.ly step and click **Sign in**.
3. Paste a Scrape.ly API key. Create one in the [dashboard](https://my.scrape.ly) under **Settings → API & Integrations → API keys**.

Zapier shows the connection under your Scrape.ly username. A [scoped key](https://scrape.ly/docs/api-keys.md) works too, as long as it has the scopes of the steps you use (see [Scopes](#scopes)).

## Triggers

| Trigger | Starts the Zap when | Type |
|---|---|---|
| **Actor Run Event** | A run of the Actor you pick starts, succeeds, fails, times out, or is aborted. Leave the Actor empty to trigger on runs of every Actor in your account. | Instant |
| **Task Run Event** | The same, for a [saved task](https://scrape.ly/docs/integrations.md#tasks). | Instant |
| **Actor Build Event** | A build of one of your own Actors starts, succeeds, fails, times out, or is aborted. | Instant |
| **New Dataset Item** | A new item is added to the dataset you pick. | Every few minutes |

**Events** in the instant triggers picks which outcomes start the Zap. Empty means every finished state: succeeded, failed, timed out, and aborted.

Instant triggers use [webhooks](https://scrape.ly/docs/integrations.md#webhooks). Turning the Zap on creates a webhook in your account, and turning it off deletes it. They count toward your webhook limit, and you see them under **Automations → Webhooks**. Each trigger only fires for your own runs.

The trigger's data is the run (or build), with `eventType` added. Use `defaultDatasetId` in a **Find Dataset Item** step to read the run's results.

## Actions

| Action | What it does |
|---|---|
| **Run Actor** | Starts a run. Its input fields come from the Actor's input form, plus an **Input JSON** field for anything else. |
| **Run Task** | Starts a run of a saved task. The Actor's input fields (all optional) and **Input overrides** replace matching fields of its saved input. |
| **Run Actor and Get Results** | Runs an Actor, waits up to 20 seconds, and returns its results. |
| **Run Task and Get Results** | The same for a saved task. |
| **Abort Run** | Stops a running run, optionally gracefully. |
| **Resurrect Run** | Restarts a finished run with the same storages. |
| **Build Actor** | Starts a build of one of your Actors. |
| **Create Task** | Saves an Actor with an input and options as a task. |
| **Update Task Input** | Replaces a task's saved input. |
| **Push Items to Dataset** | Adds one item (a JSON object) or several (a JSON array) to a dataset. Give a name instead of picking one to create the dataset if it doesn't exist. |
| **Set Key-Value Store Record** | Saves a JSON or text value, or a file such as an image or PDF, under a key. Give a store name to create the store if it doesn't exist. |
| **Create Schedule** | Runs an Actor or task on a [cron schedule](https://scrape.ly/docs/integrations.md#schedules). |

Run Actor and Run Task take **Build**, **Memory**, and **Timeout** for the run, and **Wait for finish** (up to 20 seconds). For Actors that charge per result or per event, **Max charged results** and **Max cost (USD)** cap what the run can cost. The "and Get Results" actions also take **Results to return** (up to 1,000, default 100), which limits only what the step returns, not what the run scrapes or charges.

## Searches

| Search | Finds |
|---|---|
| **Find Dataset Item** | Items of a dataset, as one result with an `items` list and `itemsCount`. Set **Limit** (up to 1,000), **Offset**, and **Fields**. |
| **Find Run Log** | A run's log: the last line, the last 10,000 characters (where a failed run's error is), and the whole log as a file. |
| **Find Last Run** | The latest run of an Actor or task, optionally with a given status. |
| **Find Run** | A run by its ID. |
| **Find Actor** | An Actor by its ID or `username/actor-name`. |
| **Find Task** | A saved task by its ID. |
| **Find Key-Value Store Record** | The value under a key. JSON values are also spread into separate fields; files such as screenshots and PDFs come back as a file you can pass to other apps. |

When nothing is found, the search returns no result, so you can use Zapier's **If nothing is found** options.

## Long runs

Zapier gives each step about 30 seconds. **Run Actor and Get Results** and **Run Task and Get Results** only work for runs that finish within 20 seconds; a longer run keeps running and the step reports that it is still running.

For longer runs, split the work into two Zaps:

1. **Zap 1:** your trigger → **Run Actor** (or **Run Task**).
2. **Zap 2:** **Actor Run Event** (Succeeded) → **Find Dataset Item** with the trigger's `defaultDatasetId` → send the results where you need them.

## Scopes

A scoped API key needs these scopes for each step:

| Steps | Scopes |
|---|---|
| Sign in | any key |
| Instant triggers | `webhooks:write`, `actors:run`, `runs:read`, run permission **Actor's own permission level**, no Actor restriction or spending cap |
| New Dataset Item, Find Dataset Item, Push Items to Dataset | `datasets:read`, or `datasets:write` to push |
| Run Actor, Run Task, Run Actor and Get Results, Run Task and Get Results, Resurrect Run | `actors:run`, `runs:read`, plus `datasets:read` to get results |
| Abort Run | `runs:write` |
| Find Run, Find Run Log, Find Last Run | `runs:read` |
| Build Actor | `actors:build` |
| Create Task, Update Task Input, Find Task | `tasks:write` or `tasks:read` |
| Find / Set Key-Value Store Record | `keyValueStores:read` or `keyValueStores:write` |
| Create Schedule | `schedules:write`, `actors:run` |
| Dropdowns and Find Actor | `actors:read`, `tasks:read`, `datasets:read`, `keyValueStores:read`, `runs:read` |

See [API keys & permissions](https://scrape.ly/docs/api-keys.md).

---

- Previous: [n8n](https://scrape.ly/docs/n8n.md)
- Next: [LangChain](https://scrape.ly/docs/langchain.md)
- All docs: [Docs index](https://scrape.ly/docs.md), [llms.txt](https://scrape.ly/llms.txt)
