Apify Slack Integration: Get Scraping Alerts & Notifications
To send Apify notifications and scraped data to Slack, use the built-in Apify Slack integration: open your Actor or Task, go to Integrations, pick Slack, authorize the workspace, choose a channel, and select events like run succeeded or failed. For custom formatting, point an Apify webhook at a Slack Incoming Webhook URL instead.
Teams that run scrapers on schedules need signal without dashboard babysitting: success summaries, failure pings, and links to datasets. Apify supports Slack through a built-in integration (fastest) and webhooks (most flexible). You can also route events through n8n, Make, or Zapier when you need filters or enrichment first.
Send Apify Actor run notifications and dataset results to Slack channels via webhooks or the Apify Slack integration. Use for monitoring, alerts, and team data sharing.
Details below match Apify’s Slack integration and webhooks documentation (verified May 2026). For a broader view of connectors, see Apify integrations.
Compare integration options
| Method | Best for | Complexity |
|---|---|---|
| Apify → Slack (built-in) | Run succeeded/failed messages, slash commands | Low |
| Apify webhook → Slack Incoming Webhook | Custom text, fields, emojis, conditional formatting | Medium |
| Apify webhook → n8n / Make / Zapier → Slack | Filter rows, dedupe, enrich, then notify | Medium/high |
Method 1: Built-in Slack integration
- Open the Actor or Task to monitor in the Apify Console.
- Go to Integrations → Slack → Configure.
- Authorize Apify to post in your workspace.
- Choose the channel and message template.
- Enable events: at minimum
ACTOR.RUN.FAILEDfor reliability; addACTOR.RUN.SUCCEEDEDwhen you want positive confirmation.
After setup, qualifying runs post automatically. You can also trigger runs from Slack with /apify call <ACTOR_OR_TASK_ID> once the app is installed. See the official Slack docs linked above.
Method 2: Webhooks and Slack Incoming Webhooks
Use this when you want full control over JSON (blocks, links, mentions).
Step A: Create an Incoming Webhook
- Open Slack API: Incoming Webhooks.
- Create an app or incoming webhook for your workspace.
- Pick the channel and copy the webhook URL.
Step B: Add an Apify webhook
- In the Console, open the Actor or Task → Integrations → Add webhook.
- URL: paste the Slack webhook URL.
- Event: e.g.
ACTOR.RUN.SUCCEEDEDorACTOR.RUN.FAILED. - Optional: set a payload template so Slack receives valid JSON.
Example payload template (simple text message):
{
"text": "Scraper finished\n*Actor:* {{resource.actId}}\n*Dataset:* {{resource.defaultDatasetId}}\n*Runtime:* {{resource.stats.runTimeSecs}}s\n<https://console.apify.com/actors/{{resource.actId}}/runs/{{resource.id}}?fpr=use-apify|Open run>"
}
Enable interpolate variables in string fields so {{resource.*}} placeholders resolve. For payload keys and events, see webhook actions.
Reliability notes: Apify expects a timely HTTP response, retries failures with backoff, supports static IPs for allowlists, and lets you add a secret token to the URL for basic verification.
Step C: Test
Run the Actor and confirm the Slack message includes correct links and dataset references.
Method 3: Middleware (filter before Slack)
When the built-in “every run” notification is too noisy:
- Apify webhook → n8n (or Make/Zapier).
- Fetch dataset items via the Apify API.
- Filter (e.g. price drop > 5%, new leads only).
- Post to Slack with a formatted message or Block Kit.
See Apify + n8n for a full workflow pattern.
Message templates you can reuse
Lead generation summary
New leads scraped
*Query:* dentists in Austin, TX
*Rows:* 24
*High-rated (4.5+):* 8
<dataset or sheet link>
Price monitoring
Price check complete
*SKUs:* 150
*Drops:* 12 · *Increases:* 3
*Largest drop:* Widget Pro $99 → $79
Failure alert
Apify run failed
*Actor:* <name>
*Run:* <link to Console>
Check logs and proxy settings.
Best practices
- Dedicated channel: e.g.
#scraping-alertsso operational noise stays out of#general. - Fail-first alerting: always subscribe to failed and timed out runs before polishing success copy. Pair Slack alerts with advanced Actor monitoring for schema checks and health patterns.
- Deep links: every message should link to the run and, when relevant, the default dataset.
- Threads for detail: post a one-line summary in-channel and use a thread for JSON snippets or long lists.
- Secrets: do not paste API tokens into Slack messages; link to Console settings instead.
Getting started
- Sign up for Apify.
- Configure Slack on a pilot Actor under Integrations.
- Run a test job and adjust templates.
Apify’s free plan includes monthly credits; Slack’s free workspaces work with Incoming Webhooks and app installs subject to Slack’s current limits.
Use Actor or Task → Integrations → Slack → Configure for the native integration, or add a webhook that posts to a Slack Incoming Webhook URL. Both can fire on run success, failure, and other events.
Yes. Subscribe to ACTOR.RUN.FAILED (and ACTOR.RUN.TIMED_OUT if you use timeouts) on either the Slack integration or a webhook. Failure alerts are the highest-value notification for scheduled production scrapers.
Incoming Webhooks and middleware can fetch dataset items via the Apify API and post summaries or top rows. Very large datasets should link to the dataset in the Console or to an exported Sheet rather than pasting full JSON.
Switch to webhooks plus n8n, Make, or Zapier to filter or aggregate results before Slack. Alternatively post only failures from Apify and run a separate weekly summary workflow.
After you authorize the Apify Slack app, you can trigger runs with commands such as /apify call followed by your Actor or task identifier. The command works for Actors and tasks that do not require input field configuration. See Apify’s Slack integration documentation for the exact syntax and permissions.
For plain run status pings, the native Apify Slack integration is faster and free of an extra connector. Reach for Zapier, Make, or n8n only when you need to filter rows, enrich data, or fan out to several apps before posting to Slack.
You can subscribe to lifecycle events including run created, run succeeded, run failed, and run timed out. Customize the message text with Handlebars-style templates that reference fields such as the Actor ID, run ID, and default dataset ID.
Common mistakes and fixes
Slack webhook URL returns 404 after setup.
Regenerate the Incoming Webhook URL in your Slack app settings. Webhook URLs can be invalidated if the channel is deleted or workspace permissions change.
Apify webhook fires but Slack receives no message.
Test the webhook URL directly with curl first. Then verify the Apify webhook payload format matches what your Slack message template expects, using the 'eventData' fields for run status and Actor ID.





