Make.com + Apify Complete Guide: Automate Web Scraping Workflows (2026)
Make.com (formerly Integromat) has a native Apify module that lets you run Actors, retrieve datasets, and build full automation pipelines — all without writing API calls manually.
This guide covers every Make.com + Apify integration pattern.
Why Use Make.com with Apify?
Apify is powerful for collecting data. Make.com is powerful for routing and processing that data. Together:
[Apify: Scrape structured data]
↓
[Make.com: Transform, filter, route]
↓
[Google Sheets | HubSpot | Slack | Airtable | Email | Webhook]
Make.com replaces custom webhook handlers, data transformation code, and integration boilerplate.
Module 1: Run an Actor
Use: Start an Apify Actor and wait for results.
- Add module: Apify → Run an Actor
- Connect Apify account (OAuth)
- Set Actor ID:
apify/google-maps-scraper - Configure input:
{
"searchStringsArray": ["{{1.search_query}}"],
"maxCrawledPlacesPerSearch": 50
}
Sync vs Async:
- Sync (Wait for finish): Make waits for Actor to complete. Good for Actors < 40 seconds.
- Async: Make starts Actor and returns run ID immediately. Use when Actor takes longer.
Module 2: Watch Actor Run Results
Use: Trigger a Make scenario when an Apify Actor run completes.
- Add trigger: Apify → Watch Actor Run Results
- Select Actor and dataset fields to watch
- Make polls Apify API every 15 minutes
OR: Use Apify webhooks for real-time triggering:
- In Apify Console → Your Actor → Settings → Webhooks
- Event:
ACTOR.RUN.SUCCEEDED - URL: Your Make.com webhook URL
- In Make: Webhooks → Custom Webhook as trigger
Module 3: Get Actor Run Results
Use: Fetch dataset items from a completed run.
- Add module: Apify → Get Items of a Dataset
- Dataset ID:
{{run.defaultDatasetId}}(from previous Run module) - Limit: 1000 (or your batch size)
Complete Pipeline: Scrape Google Maps → CRM
Scenario Structure
[Schedule: Every Monday 9 AM]
→ [Apify: Run Google Maps Scraper]
→ [Iterator: Loop through each business]
→ [Filter: Exclude already-added leads]
→ [HubSpot: Create Contact]
→ [Slack: Notify sales team]
Step-by-Step Setup
-
Trigger: Schedule (Monday 9 AM)
-
Apify: Run an Actor (sync)
- Actor:
apify/google-maps-scraper - Input:
{"searchStringsArray": ["plumbers Chicago"], "maxCrawledPlacesPerSearch": 100}
- Actor:
-
Iterator (splits dataset array into individual items)
-
Filter (optional):
item.phone != null AND item.website != null -
HTTP: Check if exists (optional dedup — query your CRM)
-
HubSpot: Create/Update Contact
- First name:
{{item.title}} - Phone:
{{item.phone}} - Website:
{{item.website}} - Custom:
google_maps_rating={{item.totalScore}}
- First name:
-
Slack: Post message
- Channel:
#sales-leads - Message:
"{{item.title}} added to HubSpot ({{item.city}}, rated {{item.totalScore}}⭐)"
- Channel:
Pipeline: Price Monitor → Slack Alert
[Schedule: Daily 8 AM]
→ [Apify: Run price monitor Actor]
→ [Iterator: Each product]
→ [Filter: price < previous_price * 0.95]
→ [Slack: Send price drop alert]
In the filter module:
- Condition:
{{item.price}} < {{item.previous_price}} * 0.95
In the Slack message:
"Price drop: {{item.product}} is now ${{item.price}} (was ${{item.previous_price}}) at {{item.url}}"
Pipeline: Research Report → Google Docs
For weekly competitive intelligence:
[Schedule: Friday 5 PM]
→ [Apify: Run competitor website scraper]
→ [HTTP: Send content to Claude API]
→ [Google Docs: Append to weekly report]
Claude API module (HTTP):
{
"model": "claude-3-7-sonnet-20250219",
"messages": [{"role": "user", "content": "Summarize key product changes from this competitor page: {{content}}"}],
"max_tokens": 500
}
Make.com Plan for Apify Workflows
| Make Plan | Ops/Month | Apify Actor runs | Price |
|---|---|---|---|
| Free | 1,000 | ~5–10 runs | $0 |
| Core | 10,000 | ~50–100 runs | $9/month |
| Pro | 10,000 | ~50–100 runs | $16/month |
| Teams | 10,000+ | More | $29/month |
Each Actor run typically uses 5–20 Make operations (start + poll + process items).
