🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Apify + Notion: competitor Reels tracked in one place

Lisa Granqvist Partner Workflow Automation Expert

You open Instagram “just to check competitors,” and suddenly it’s 45 minutes later. The worst part is you still didn’t capture what mattered: which Reels are taking off, why they’re working, and what you should steal (ethically) for your own content.

This Apify Notion tracking automation hits social media managers first, but growth marketers and agency owners feel it too. Instead of messy screenshots and scattered links, you get a clean Notion database of competitor Reels, with engagement scoring and notes you can actually use.

Below, you’ll see how the workflow runs in n8n, what it produces, and where the real time savings come from when you do this every week.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Apify + Notion: competitor Reels tracked in one place

The Problem: Competitor Reels Research Turns Into Busywork

Competitor research for Instagram Reels sounds simple until you try to do it consistently. You bounce between profiles, hunt for “recent” vs “popular,” open each Reel, guess whether it’s actually performing, then save it somewhere you will remember later. Maybe you drop links into a doc. Maybe you screenshot. Maybe you trust your memory (you shouldn’t). After a week, your “swipe file” is a pile of half-context notes, and you’re back to re-finding the same Reels again.

It adds up fast. Here’s where it breaks down.

  • You spend about 2 hours a week just collecting links, and another hour turning them into something searchable.
  • It’s hard to spot early momentum, so you usually notice trends after they’re already everywhere.
  • Manual notes are inconsistent, which means the “why it worked” part gets lost.
  • Team handoffs are painful because nothing is standardized, so people interpret “good Reel” differently.

The Solution: Apify Monitors Accounts, Notion Becomes Your Swipe File

This workflow turns competitor Reels tracking into a system. It starts with a list of public Instagram profiles you want to monitor, pulls their recent Reels through Apify, and then checks what’s new versus what you have already stored. For anything worth logging, it calculates engagement signals, flags content that looks “hot” early, and (when needed) translates text so you’re not blocked by language. Then it sends each Reel into a structured Notion database, with consistent fields and AI-generated notes you can scan in minutes. Honestly, the magic isn’t scraping. It’s the organization and the scoring, so you stop guessing.

The workflow kicks off on a schedule (or manually when you’re testing). Apify runs the Instagram scraping job, n8n waits until the dataset is ready, then maps and filters the Reel metadata. Finally, the workflow uploads the video file to an AI analysis step (Gemini in the provided template) and writes a complete record into Notion.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you track 10 competitor accounts and you try to log 5 strong Reels per account each week. Manually, if it takes maybe 3 minutes to open, check, copy a link, and write a usable note, that’s about 150 minutes (and that’s before you organize it). With this workflow, you schedule the pull, let it process in the background, then spend roughly 10 minutes in Notion skimming the highest-scoring entries and tagging the ones you want to recreate. That’s about 2 hours back each week.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Apify to scrape Reels from public profiles.
  • Notion to store a structured competitor swipe file.
  • Gemini API key (get it from Google AI Studio).

Skill level: Intermediate. You’ll be comfortable connecting accounts, pasting API keys, and editing a few configuration values.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A scheduled run starts the workflow. You can trigger it manually while testing, then switch to the built-in schedule trigger so it monitors competitors automatically.

Notion provides the source-of-truth list. The workflow reads your tracked Instagram accounts from Notion, then builds the Apify payload so the scraper knows exactly which profiles to monitor.

Apify pulls the Reels, and n8n waits for results. The workflow launches the Apify actor, checks run status, and pauses as needed until the dataset items are ready. No tab-refreshing required.

Reels are scored, analyzed, and written back to Notion. n8n maps the Reel metadata, verifies ownership, updates metrics for existing entries, and creates new records when needed. For deeper understanding, it fetches the video file and sends it through an AI analysis prompt so you get consistent notes (hook style, content category, and what’s likely driving engagement).

You can easily modify the “hot” thresholds and the note format to match your team’s content strategy. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow starts manually and can optionally be scheduled for unattended runs.

  1. Open Manual Start Trigger and keep it as the entry point for manual testing.
  2. If you want scheduled runs, configure Utility: Scheduled Start with your preferred interval (the workflow currently triggers at 04:00 daily).
  3. Confirm Manual Start Trigger connects to Config Variables as shown in the execution flow.
Tip: Keep Manual Start Trigger connected for safe testing even if you enable Utility: Scheduled Start.

Step 2: Connect Notion Data Sources

These nodes read and write account and reel data from Notion. Several Notion nodes are used across the workflow for sources, reels, and updates.

  1. In Fetch Source Records, set Resource to databasePage, Operation to getAll, and select your Sources database. Credential Required: Connect your notionApi credentials.
  2. In Fetch Reel Entries, keep Return All enabled and the filter date expression as {{ new Date(Date.now() - $('Config Variables').first().json.daysLimit * 24 * 60 * 60 * 1000).toISOString().split('T')[0] }}. Credential Required: Connect your notionApi credentials.
  3. Confirm Modify Account Pages updates Status|select, Title|title, and URL|url using the expressions already mapped. Credential Required: Connect your notionApi credentials.
  4. Ensure Update Reel Metrics and Create Reel Record point to your Reels database. Credential Required: Connect your notionApi credentials.
⚠️ Common Pitfall: If your Notion property keys (e.g., Comments|number, URL|url) don’t match the workflow, updates will silently fail. Verify property names in each Notion node.

Step 3: Set Up Apify Scraping and Status Routing

These nodes assemble the scraping payload, launch the Apify actor, and loop until the run completes.

  1. In Config Variables, update the scrapingActorId and any limits (e.g., daysLimit, resultsLimit, maxDays, translationLang) inside the JavaScript block.
  2. In Build Apify Payload, confirm the payload references {{ $('Config Variables').first().json.daysLimit }} and {{ $('Config Variables').first().json.resultsLimit }} so the query is built dynamically.
  3. In Launch Scraper Actor, set Actor ID to {{ $('Config Variables').first().json.scrapingActorId }} and Custom Body to {{ $json.query.toJsonString() }}. Credential Required: Connect your apifyApi credentials.
  4. In Check Run Status, keep Run ID as {{ $json.id }}. Credential Required: Connect your apifyApi credentials.
  5. In Route by Status, leave the status checks for SUCCEEDED, RUNNING, and READY to control looping.
  6. Set Pause Interval to wait 1 minutes before re-checking status.
  7. In Retrieve Dataset Items, keep Dataset ID as {{ $json.defaultDatasetId }}. Credential Required: Connect your apifyApi credentials.
Tip: If your Apify runs take longer, increase Pause Interval to reduce rate-limit risk.

Step 4: Set Up Data Transformation and Routing

These steps normalize scraped data, verify ownership, and split into create vs. update paths.

  1. In Map Reel Metadata, keep the logic that sets notionPageId and publishingStatus for each reel based on maxDays.
  2. In Verify Owner, confirm the condition checks {{ $json.notionPageId }} is not empty before updating Notion accounts.
  3. In Aggregate Accounts, keep the map of usernames to Notion page IDs for later use.
  4. In Transform Reels Data, ensure existing reels are identified and new reels are tagged with IsCreated and media metadata (e.g., URL, Hashtags, videoUrl).
  5. In Iterate Records, keep batch processing to control rate limits.
  6. In Add Stats Flag, confirm the script adds myNewField for downstream logic.
  7. In Creation Switch, keep the Create/Update conditions: {{ $json.IsCreated && $json.notionAccountPageId != null }} and {{ !$json.IsCreated && $json.notionAccountPageId != null }}.

Step 5: Set Up Gemini Analysis Pipeline

This section downloads the reel video, uploads it to Gemini, and extracts structured insights.

  1. In Fetch Video File, set URL to {{ $json.videoUrl }} to download the video.
  2. In Upload to Gemini API, keep URL as https://generativelanguage.googleapis.com/upload/v1beta/files and Content Type as binaryData. Credential Required: Connect your googlePalmApi credentials.
  3. In Processing Wait, keep the wait at 1 minutes before file state checks.
  4. In Retrieve File State, set URL to {{ $json.file.uri }}. Credential Required: Connect your googlePalmApi credentials.
  5. In Upload Active Check, keep the condition {{ $json.state }} equals ACTIVE to ensure the file is ready.
  6. In Configure Prompt, keep the prompt and the translation line that uses {{ $('Config Variables').first().json.translationLang }}.
  7. In Analyze with Gemini, keep the JSON body expression and URL https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent. Credential Required: Connect your googlePalmApi credentials.
  8. In Parse Gemini Output, keep the JSON parsing logic that maps the response to item.response.
⚠️ Common Pitfall: If Gemini returns non-JSON content, Parse Gemini Output will output an error object and prevent record creation.

Step 6: Configure Output and Updates

The workflow updates existing reels and creates new records with AI-enriched data.

  1. In Update Reel Metrics, verify properties update with {{ $json.Comments }}, {{ $json.Likes }}, and {{ $json.Views }}. Credential Required: Connect your notionApi credentials.
  2. In Create Reel Record, keep the Title expression {{ ($json.response.hook ?? $json.Caption).substring(0, 50) }} and the rich text mappings for content and translation. Credential Required: Connect your notionApi credentials.

Step 7: Test and Activate Your Workflow

Run a manual test to validate scraping, AI analysis, and Notion updates before scheduling.

  1. Click Execute Workflow and trigger Manual Start Trigger to start a test run.
  2. Confirm Apify completes and Retrieve Dataset Items produces reel data without errors.
  3. Verify Analyze with Gemini returns JSON that Parse Gemini Output can parse successfully.
  4. Check Notion: updated records should appear via Update Reel Metrics and new records via Create Reel Record.
  5. When successful, activate the workflow and optionally enable Utility: Scheduled Start for production use.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Apify credentials can expire or your actor may need extra permissions for datasets. If things break, check the Apify run logs and token status first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this Apify Notion tracking automation?

Plan for about an hour if your Notion database is ready.

Do I need coding skills to automate Apify Notion tracking?

No. You’ll connect accounts, add API keys, and edit the Variables/config values.

Is n8n free to use for this Apify Notion tracking workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Apify usage-based scraping costs and Gemini API usage.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I customize this Apify Notion tracking workflow for tracking different “hot” criteria?

Yes, and you should. Update your thresholds in the Config Variables node, then adjust the rules in the Configure Prompt node so the AI labels “hot” and “early hot” the way your niche behaves. Common tweaks include changing the minimum views/likes signal you care about, adding your own content categories, and switching the translation language for non-English captions.

Why is my Apify connection failing in this workflow?

Most of the time it’s an expired or incorrect Apify token in n8n. It can also fail if the actor run is blocked, your dataset is empty for a profile, or you hit usage limits and the run ends early, so check the Apify run log to see what happened.

How many Reels can this Apify Notion tracking automation handle?

If you self-host n8n, there’s no execution cap (it mainly depends on your server and Apify/Gemini throughput). On n8n Cloud, the Starter plan supports a set monthly execution limit and higher tiers handle more. In practice, most teams track a few dozen accounts and log a few hundred Reels per month without issues, as long as you tune batch sizes and wait times.

Is this Apify Notion tracking automation better than using Zapier or Make?

For this workflow, n8n is usually the better fit because you need waits, branching, batch processing, and multi-step AI analysis, which gets expensive or awkward in simpler automation tools. The self-hosted option matters too, since this template uses community nodes that are only compatible with self-hosted n8n. Zapier or Make can still work for basic “new item to Notion” zaps, but they won’t feel great once you add scraping runs and file analysis. If you want, you can also split responsibilities: keep this in n8n, then send “approved” Reels to other tools downstream. Talk to an automation expert if you’re deciding between stacks.

Once this is running, competitor research stops being a weekly chore and turns into a reliable input stream. Your Notion database stays fresh, and you can focus on making the next Reel instead of hunting for examples.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal