# n8n Template Scraper (`datavoyantlab/n8n-templates-scraper`)

Scrape n8n.io workflow template with this Apify actor. Filter by category (AI, Marketing, DevOps), sort by popularity & get structured data with importable JSONs for developers & businesses

- **URL**: https://beta-securitybyobscurity.apify.com/datavoyantlab/n8n-templates-scraper.md
- **Developed by:** [DataVoyantLab](https://beta-securitybyobscurity.apify.com/datavoyantlab) (community)
- **Categories:** Automation, Integrations, Developer tools
- **Stats:** 24 total users, 8 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

# README

## n8n Workflow Template Scraper

This Apify actor automatically collects workflow templates from [n8n.io](https://n8n.io/workflows/). You can filter by **category**, **search by keyword**, sort results by **popularity**, **date**, or **relevancy**, and even fetch **importable JSON** versions of workflows for direct use in your own n8n instance.

Whether you're a developer exploring automation ideas, a business building internal tools, or a researcher analyzing workflow trends — this actor helps you save time and get structured data fast.

### ✅ What You Can Do with It

- Scrape n8n workflows by **category** (AI, Marketing, DevOps, etc.)
- Narrow down results with a **keyword search**
- Sort by **most recent**, **popularity**, or **relevancy**
- Optionally download **importable workflows** in JSON format
- Get clean, structured output for analysis or integration

### 🔍 Example Use Cases

- **Developers** analyzing how others structure workflows
- **Automation experts** looking for inspiration or components
- **Product teams** researching automation use cases
- **Analysts** studying how automation is evolving across industries

### 💡 Features at a Glance

| Feature                 | Description                                          |
| -- | - |
| 🔄 Automated scraping   | Collects templates directly from n8n.io              |
| 🏷️ Category filtering  | Choose from 14+ categories (AI, Marketing, HR, etc.) |
| 🔑 Keyword search       | Search by specific terms within a category           |
| 🔀 Sorting options      | Sort by popularity, date, or relevancy               |
| 📊 Structured output    | Clean JSON output, easy to parse or visualize        |
| 📥 Importable JSONs     | Option to fetch full workflow exports                |
| ⚡ Optimized performance | Fast scraping with low overhead                      |

### 🛠 Input Options

Here’s how you can configure the scraper (based on the schema):

| Field                   | Type    | Default       | Description                                                                  |
| -- | - | - | - |
| `category`              | string  | `ai`          | Category of workflows to scrape (e.g. `ai`, `devops`)                        |
| `search_query`          | string  | `""`          | Optional keyword to search within the selected category                      |
| `store_only_importable` | boolean | `true`        | If true, only importable workflows will be stored                            |
| `sort_option`           | string  | `most_recent` | Sort option: `most_recent`, `popularity`, or `relevancy`                     |
| `sort_direction`        | string  | `desc`        | Sorting direction: `asc` or `desc` (ignored if sort is by relevancy)         |
| `max_workflows`         | integer | `100`         | Max number of workflows to collect                               |

### ▶️ How to Use

1. Open the actor in the **Apify Console**
2. Configure the input settings as needed
3. Run the actor
4. The extracted workflows and their metadata will be saved in your **dataset**

### ▶️ About `store_only_importable`

When the `store_only_importable` option is set to `true`, only the workflows that can be directly imported into n8n are saved in the dataset. This means:

- The dataset contains the individual workflow JSON files ready for import
- Metadata related to each workflow is also stored, helping you manage and identify workflows easily

### ▶️ How to Import into Your n8n Workflow

1. From the dataset, retrieve the JSON of the workflow you want to import
2. In your n8n instance, open an existing or new workflow
3. Paste the JSON directly into the editor
4. Configure any required authentication and environment-specific variables

### Example Input

#### Importable workflows only

```json
{
  "category": "marketing",
  "search_query": "email",
  "store_only_importable": true,
  "sort_option": "popularity",
  "sort_direction": "desc",
  "max_workflows": 75
}
```

#### workflows metadata

```json
{
  "category": "marketing",
  "search_query": "email",
  "store_only_importable": false,
  "sort_option": "popularity",
  "sort_direction": "desc",
  "max_workflows": 75
}
```

### 📤 Output Format

#### Importable workflow

```json
{
    "id": "aOQANirVMuWrH0ZD",
    "meta": {
      "instanceId": "b78ce2d06ac74b90a581919cf44503cf07404c11eda5c3847597226683145618"
    },
    "name": "Gmail AI auto-responder: create draft replies to incoming emails",
    "tags": [],
    "nodes": [
      {
        "id": "2a9ff08f-919a-41a8-980b-8c2bca3059e4",
        "name": "Gmail Trigger",
        "type": "n8n-nodes-base.gmailTrigger",
        "position": [
          -332.809175564116,
          566.0845437534399
        ],
        "parameters": {
          "simple": false,
          "filters": {
            "q": "-from:me"
          },
          "options": {},
          "pollTimes": {
            "item": [
              {
                "mode": "everyMinute"
              }
            ]
          }
        },
        "credentials": {
          "gmailOAuth2": {
            "id": "ofvBTX8A0aWfQb2O",
            "name": "Gmail account"
          }
        },
        "typeVersion": 1
      },
      {
        "id": "3ef14615-0045-404f-a21b-2c65a52f4be8",
        "name": "If Needs Reply",
        "type": "n8n-nodes-base.if",
        "position": [
          240,
          560
        ],
        "parameters": {
          "options": {},
          "conditions": {
            "options": {
              "leftValue": "",
              "caseSensitive": true,
              "typeValidation": "strict"
            },
            "combinator": "and",
            "conditions": [
              {
                "id": "53849246-ad32-4845-9976-9f9688f5a6f2",
                "operator": {
                  "type": "boolean",
                  "operation": "true",
                  "singleValue": true
                },
                "leftValue": "={{ $json.needsReply }}",
                "rightValue": "true"
              }
            ]
          }
        },
        "typeVersion": 2
      },
      {
        "id": "36968dd5-8d51-4184-a05a-587b6c95aa82",
        "name": "JSON Parser",
        "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
        "position": [
          100,
          720
        ],
        "parameters": {
          "jsonSchema": "{\n  \"type\": \"object\",\n  \"properties\": {\n    \"needsReply\": {\n      \"type\": \"boolean\"\n      }\n  },\n  \"required\": [\"needsReply\"]\n}\n"
        },
        "typeVersion": 1
      },
      {
        "id": "2a64dce8-e2f0-475e-a366-a02084293aad",
        "name": "OpenAI Chat",
        "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
        "position": [
          -92.809175564116,
          726.0845437534399
        ],
        "parameters": {
          "model": "gpt-4o",
          "options": {
            "temperature": 0,
            "responseFormat": "json_object"
          }
        },
        "credentials": {
          "openAiApi": {
            "id": "13ffkrNMlQMfvbZy",
            "name": "OpenAi account"
          }
        },
        "typeVersion": 1
      },
      {
        "id": "be892ff8-0981-4b34-9c93-7674ddd90360",
        "name": "Sticky Note",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          -429.809175564116,
          461.08454375343996
        ],
        "parameters": {
          "width": 304.10628068244364,
          "height": 394.42512272977456,
          "content": "### When I receive an Email\n"
        },
        "typeVersion": 1
      },
      {
        "id": "9d92839a-9ff2-436c-8abb-2f43e07c1ace",
        "name": "Sticky Note1",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          -112.809175564116,
          460.08454375343996
        ],
        "parameters": {
          "width": 556,
          "height": 397,
          "content": "### ... that Needs a Reply\n"
        },
        "typeVersion": 1
      },
      {
        "id": "3cd77609-684c-44e2-9cdc-9479cfd836bd",
        "name": "Sticky Note2",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          460,
          460
        ],
        "parameters": {
          "width": 333.19082443588354,
          "height": 400.08454375343996,
          "content": "### Generate a Reply"
        },
        "typeVersion": 1
      },
      {
        "id": "b123cf31-767d-48bb-a0ba-79a69f6da585",
        "name": "Sticky Note3",
        "type": "n8n-nodes-base.stickyNote",
        "position": [
          807.190824435884,
          461.08454375343996
        ],
        "parameters": {
          "width": 326,
          "height": 395,
          "content": "### ...as a Draft in the conversation"
        },
        "typeVersion": 1
      },
      {
        "id": "1a87c416-6b1c-4526-a2b6-20468c95ea0e",
        "name": "OpenAI Chat Model",
        "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
        "position": [
          480,
          680
        ],
        "parameters": {
          "model": "gpt-4-turbo",
          "options": {}
        },
        "credentials": {
          "openAiApi": {
            "id": "13ffkrNMlQMfvbZy",
            "name": "OpenAi account"
          }
        },
        "typeVersion": 1
      },
      {
        "id": "84b4d516-252e-444e-b998-2d4aa0f89653",
        "name": "Gmail - Create Draft",
        "type": "n8n-nodes-base.gmail",
        "position": [
          900,
          560
        ],
        "parameters": {
          "message": "={{ $json.text.replace(/\\n/g, \"<br />\\n\") }}",
          "options": {
            "sendTo": "={{ $('Gmail Trigger').item.json.headers.from }}",
            "threadId": "={{ $('Gmail Trigger').item.json.threadId }}"
          },
          "subject": "=Re: {{ $('Gmail Trigger').item.json.headers.subject }}",
          "resource": "draft",
          "emailType": "html"
        },
        "credentials": {
          "gmailOAuth2": {
            "id": "ofvBTX8A0aWfQb2O",
            "name": "Gmail account"
          }
        },
        "typeVersion": 2.1
      },
      {
        "id": "86017ff4-9c57-4b2a-9cd9-f62571a05ffd",
        "name": "Assess if message needs a reply",
        "type": "@n8n/n8n-nodes-langchain.chainLlm",
        "position": [
          -92.809175564116,
          566.0845437534399
        ],
        "parameters": {
          "prompt": "=Subject: {{ $json.subject }}\nMessage:\n{{ $json.textAsHtml }} ",
          "messages": {
            "messageValues": [
              {
                "message": "Your task is to assess if the message requires a response. Return in JSON format true if it does, false otherwise.\nMarketing emails don't require a response."
              }
            ]
          }
        },
        "typeVersion": 1.3
      },
      {
        "id": "cab1e7e5-93dc-4850-a471-e285cdbe2058",
        "name": "Generate email reply",
        "type": "@n8n/n8n-nodes-langchain.chainLlm",
        "position": [
          500,
          520
        ],
        "parameters": {
          "text": "=Subject: {{ $('Gmail Trigger').item.json.subject }}\nMessage: {{ $('Gmail Trigger').item.json.textAsHtml }}",
          "messages": {
            "messageValues": [
              {
                "message": "You're a helpful personal assistant and your task is to draft replies on my behalf to my incoming emails. Whenever I provide some text from an email, return an appropriate draft reply for it and nothing else.\nEnsure that the reply is suitable for a professional email setting and addresses the topic in a clear, structured, and detailed manner.\nDo not make things up.\n\nDetailed instructions:\n- Be concise and maintain a business casual tone.\n- Start with \"Hello,\", and end with \"Best,\"\n- When replying to yes-no questions, draft 2 responses: one affirmative and one negative separated by \" - - - - - - - OR - - - - - - - \"\n- If you don't know an answer, you can leave placeholders like \"[YOUR_ANSWER_HERE]\".\n- Don't use any special formatting, only plain text.\n- Reply in the same language as the inbound email."
              }
            ]
          },
          "promptType": "define"
        },
        "typeVersion": 1.4
      }
    ],
    "active": true,
    "pinData": {},
    "settings": {
      "executionOrder": "v1"
    },
    "versionId": "c4448c34-1f75-4479-805e-20d8a69a7e00",
    "connections": {
      "JSON Parser": {
        "ai_outputParser": [
          [
            {
              "node": "Assess if message needs a reply",
              "type": "ai_outputParser",
              "index": 0
            }
          ]
        ]
      },
      "OpenAI Chat": {
        "ai_languageModel": [
          [
            {
              "node": "Assess if message needs a reply",
              "type": "ai_languageModel",
              "index": 0
            }
          ]
        ]
      },
      "Gmail Trigger": {
        "main": [
          [
            {
              "node": "Assess if message needs a reply",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "If Needs Reply": {
        "main": [
          [
            {
              "node": "Generate email reply",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "OpenAI Chat Model": {
        "ai_languageModel": [
          [
            {
              "node": "Generate email reply",
              "type": "ai_languageModel",
              "index": 0
            }
          ]
        ]
      },
      "Generate email reply": {
        "main": [
          [
            {
              "node": "Gmail - Create Draft",
              "type": "main",
              "index": 0
            }
          ]
        ]
      },
      "Assess if message needs a reply": {
        "main": [
          [
            {
              "node": "If Needs Reply",
              "type": "main",
              "index": 0
            }
          ]
        ]
      }
    }
  }
```

#### workflow metadata

```json
{
            "id": 2271,
            "name": "Gmail AI Auto-Responder: Create Draft Replies to incoming emails",
            "totalViews": 50735,
            "purchaseUrl": null,
            "user": {
                "id": 91701,
                "name": "Nicolas Chourrout",
                "username": "nchourrout",
                "bio": "Founder of Flowful, an AI consulting agency.",
                "verified": false,
                "links": "[\"https://flowful.ai\"]",
                "avatar": "https://gravatar.com/avatar/2fba0be00731d911f64fdf32d28cf0ae59830ee1d42ad0e415d3ea53c0d5a802?r=pg&d=retro&size=200"
            },
            "description": "This workflow automatically generates draft replies in Gmail.\nIt's designed for anyone who manages a high volume of emails or often face writer's block when crafting responses.\nSince it doesn't send the generated message directly, you're still in charge of editing and approving emails before they go out.\n\nHow It Works:\nEmail Trigger: activates when new emails reach the Gmail inbox\nAssessment: uses OpenAI gpt-4o and a JSON parser to determine if a response is necessary.\nReply Generation: crafts a reply with OpenAI GPT-4 Turbo\nDraft Integration: after converting the text to html, it places the draft into the Gmail thread as a reply to the first message\n\nSet Up Overview (~10 minutes):\nOAuth Configuration (follow n8n instructions here):\n  Setup Google OAuth in Google Cloud console. Make sure to add Gmail API with the modify scope.\n  Add Google OAuth credentials in n8n. Make sure to add the n8n redirect URI to the   Google Cloud Console consent screen settings.\nOpenAI Configuration: add OpenAI API Key in the credentials\nTweaking the prompt: edit the system prompt in the \"Generate email reply\" node to suit your needs\n\nDetailed Walkthrough\nCheck out this blog post where I go into more details on how I built this workflow.\n\nReach out to me here if you need help building automations for your business.",
            "createdAt": "2024-05-19T21:48:39.986Z",
            "nodes": [
                {
                    "id": 356,
                    "icon": "file:gmail.svg",
                    "name": "n8n-nodes-base.gmail",
                    "codex": {
                        "data": {
                            "alias": [
                                "email",
                                "human",
                                "form",
                                "wait",
                                "hitl",
                                "approval"
                            ],
                            "resources": {
                                "generic": [
                                    {
                                        "url": "https://n8n.io/blog/why-business-process-automation-with-n8n-can-change-your-daily-life/",
                                        "icon": "🧬",
                                        "label": "Why business process automation with n8n can change your daily life"
                                    },
                                    {
                                        "url": "https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/",
                                        "icon": "🎫",
                                        "label": "Supercharging your conference registration process with n8n"
                                    },
                                    {
                                        "url": "https://n8n.io/blog/no-code-ecommerce-workflow-automations/",
                                        "icon": "store",
                                        "label": "6 e-commerce workflows to power up your Shopify s"
                                    },
                                    {
                                        "url": "https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/",
                                        "icon": "👥",
                                        "label": "How to get started with CRM automation (with 3 no-code workflow ideas"
                                    },
                                    {
                                        "url": "https://n8n.io/blog/automate-google-apps-for-productivity/",
                                        "icon": "💡",
                                        "label": "15 Google apps you can combine and automate to increase productivity"
                                    },
                                    {
                                        "url": "https://n8n.io/blog/your-business-doesnt-need-you-to-operate/",
                                        "icon": " 🖥️",
                                        "label": "Hey founders! Your business doesn't need you to operate"
                                    },
                                    {
                                        "url": "https://n8n.io/blog/using-automation-to-boost-productivity-in-the-workplace/",
                                        "icon": "💪",
                                        "label": "Using Automation to Boost Productivity in the Workplace"
                                    }
                                ],
                                "primaryDocumentation": [
                                    {
                                        "url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.gmail/"
                                    }
                                ],
                                "credentialDocumentation": [
                                    {
                                        "url": "https://docs.n8n.io/integrations/builtin/credentials/google/oauth-single-service/"
                                    }
                                ]
                            },
                            "categories": [
                                "Communication",
                                "HITL"
                            ],
                            "nodeVersion": "1.0",
                            "codexVersion": "1.0",
                            "subcategories": {
                                "HITL": [
                                    "Human in the Loop"
                                ]
                            }
                        }
                    },
                    "group": "[\"transform\"]",
                    "defaults": {
                        "name": "Gmail"
                    },
                    "iconData": {
                        "type": "file",
                        "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTYiIGhlaWdodD0iMTkzIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZmlsbD0iIzQyODVGNCIgZD0iTTU4LjE4MiAxOTIuMDVWOTMuMTRMMjcuNTA3IDY1LjA3NyAwIDQ5LjUwNHYxMjUuMDkxYzAgOS42NTggNy44MjUgMTcuNDU1IDE3LjQ1NSAxNy40NTV6Ii8+PHBhdGggZmlsbD0iIzM0QTg1MyIgZD0iTTE5Ny44MTggMTkyLjA1aDQwLjcyN2M5LjY1OSAwIDE3LjQ1NS03LjgyNiAxNy40NTUtMTcuNDU1VjQ5LjUwNWwtMzEuMTU2IDE3LjgzNy0yNy4wMjYgMjUuNzk4eiIvPjxwYXRoIGZpbGw9IiNFQTQzMzUiIGQ9Im01OC4xODIgOTMuMTQtNC4xNzQtMzguNjQ3IDQuMTc0LTM2Ljk4OUwxMjggNjkuODY4bDY5LjgxOC01Mi4zNjQgNC42NyAzNC45OTItNC42NyA0MC42NDRMMTI4IDE0NS41MDR6Ii8+PHBhdGggZmlsbD0iI0ZCQkMwNCIgZD0iTTE5Ny44MTggMTcuNTA0VjkzLjE0TDI1NiA0OS41MDRWMjYuMjMxYzAtMjEuNTg1LTI0LjY0LTMzLjg5LTQxLjg5LTIwLjk0NXoiLz48cGF0aCBmaWxsPSIjQzUyMjFGIiBkPSJtMCA0OS41MDQgMjYuNzU5IDIwLjA3TDU4LjE4MiA5My4xNFYxNy41MDRMNDEuODkgNS4yODZDMjQuNjEtNy42NiAwIDQuNjQ2IDAgMjYuMjN6Ii8+PC9zdmc+"
                    },
                    "displayName": "Gmail",
                    "typeVersion": 2,
                    "nodeCategories": [
                        {
                            "id": 6,
                            "name": "Communication"
                        },
                        {
                            "id": 28,
                            "name": "HITL"
                        }
                    ]
                },
                {
                    "id": 1123,
                    "icon": "fa:link",
                    "name": "@n8n/n8n-nodes-langchain.chainLlm",
                    "codex": {
                        "data": {
                            "alias": [
                                "LangChain"
                            ],
                            "resources": {
                                "primaryDocumentation": [
                                    {
                                        "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/root-nodes/n8n-nodes-langchain.chainllm/"
                                    }
                                ]
                            },
                            "categories": [
                                "AI",
                                "Langchain"
                            ],
                            "subcategories": {
                                "AI": [
                                    "Chains",
                                    "Root Nodes"
                                ]
                            }
                        }
                    },
                    "group": "[\"transform\"]",
                    "defaults": {
                        "name": "Basic LLM Chain",
                        "color": "#909298"
                    },
                    "iconData": {
                        "icon": "link",
                        "type": "icon"
                    },
                    "displayName": "Basic LLM Chain",
                    "typeVersion": 2,
                    "nodeCategories": [
                        {
                            "id": 25,
                            "name": "AI"
                        },
                        {
                            "id": 26,
                            "name": "Langchain"
                        }
                    ]
                },
                {
                    "id": 1153,
                    "icon": "file:openAiLight.svg",
                    "name": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
                    "codex": {
                        "data": {
                            "resources": {
                                "primaryDocumentation": [
                                    {
                                        "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.lmchatopenai/"
                                    }
                                ]
                            },
                            "categories": [
                                "AI",
                                "Langchain"
                            ],
                            "subcategories": {
                                "AI": [
                                    "Language Models",
                                    "Root Nodes"
                                ],
                                "Language Models": [
                                    "Chat Models (Recommended)"
                                ]
                            }
                        }
                    },
                    "group": "[\"transform\"]",
                    "defaults": {
                        "name": "OpenAI Chat Model"
                    },
                    "iconData": {
                        "type": "file",
                        "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTM2Ljg2NzEgMTYuMzcxOEMzNy43NzQ2IDEzLjY0OCAzNy40NjIxIDEwLjY2NDIgMzYuMDEwOCA4LjE4NjYxQzMzLjgyODIgNC4zODY1MyAyOS40NDA3IDIuNDMxNDkgMjUuMTU1NiAzLjM1MTUxQzIzLjI0OTMgMS4yMDM5NiAyMC41MTA1IC0wLjAxNzMxNDggMTcuNjM5MiAwLjAwMDE4NTUzM0MxMy4yNTkxIC0wLjAwOTgxNDY4IDkuMzcyNzMgMi44MTAyNSA4LjAyNTIgNi45Nzc4M0M1LjIxMTM5IDcuNTU0MSAyLjc4MjU4IDkuMzE1MzggMS4zNjEzIDExLjgxMTdDLTAuODM3NDkzIDE1LjYwMTggLTAuMzM2MjMyIDIwLjM3OTQgMi42MDEzMyAyMy42Mjk0QzEuNjkzODEgMjYuMzUzMiAyLjAwNjMyIDI5LjMzNzEgMy40NTc2IDMxLjgxNDZDNS42NDAxNSAzNS42MTQ3IDEwLjAyNzcgMzcuNTY5NyAxNC4zMTI4IDM2LjY0OTdDMTYuMjE3OSAzOC43OTczIDE4Ljk1NzkgNDAuMDE4NSAyMS44MjkyIDM5Ljk5OThDMjYuMjExOCA0MC4wMTEgMzAuMDk5NCAzNy4xODg1IDMxLjQ0NjkgMzMuMDE3MUMzNC4yNjA4IDMyLjQ0MDkgMzYuNjg5NiAzMC42Nzk2IDM4LjExMDggMjguMTgzM0M0MC4zMDcxIDI0LjM5MzIgMzkuODA0NiAxOS42MTk0IDM2Ljg2ODMgMTYuMzY5M0wzNi44NjcxIDE2LjM3MThaTTIxLjgzMTcgMzcuMzg2QzIwLjA3OCAzNy4zODg1IDE4LjM3OTIgMzYuNzc0NyAxNy4wMzI5IDM1LjY1MDlDMTcuMDk0MSAzNS42MTg0IDE3LjIwMDQgMzUuNTU5NyAxNy4yNjkxIDM1LjUxNzJMMjUuMjM0MyAzMC45MTcxQzI1LjY0MTggMzAuNjg1OCAyNS44OTE4IDMwLjI1MjEgMjUuODg5MyAyOS43ODMzVjE4LjU1NDNMMjkuMjU1NyAyMC40OTgxQzI5LjI5MTkgMjAuNTE1NiAyOS4zMTU3IDIwLjU1MDYgMjkuMzIwNyAyMC41OTA2VjI5Ljg4OTZDMjkuMzE1NyAzNC4wMjQ3IDI1Ljk2NjggMzcuMzc3MiAyMS44MzE3IDM3LjM4NlpNNS43MjY0IDMwLjUwNzFDNC44NDc2MyAyOC45ODk2IDQuNTMxMzcgMjcuMjEwOCA0LjgzMjYzIDI1LjQ4NDVDNC44OTEzOCAyNS41MTk1IDQuOTk1MTMgMjUuNTgzMiA1LjA2ODg4IDI1LjYyNTdMMTMuMDM0MSAzMC4yMjU4QzEzLjQzNzggMzAuNDYyMSAxMy45Mzc4IDMwLjQ2MjEgMTQuMzQyOCAzMC4yMjU4TDI0LjA2NjggMjQuNjEwN1YyOC40OTgzQzI0LjA2OTMgMjguNTM4MyAyNC4wNTA1IDI4LjU3NyAyNC4wMTkzIDI4LjYwMkwxNS45Njc5IDMzLjI1MDlDMTIuMzgxNSAzNS4zMTU5IDcuODAxNDQgMzQuMDg4NCA1LjcyNzY1IDMwLjUwNzFINS43MjY0Wk0zLjYzMDEgMTMuMTIwNUM0LjUwNTEyIDExLjYwMDQgNS44ODY0IDEwLjQzNzkgNy41MzE0NCA5LjgzNDE1QzcuNTMxNDQgOS45MDI5IDcuNTI3NjkgMTAuMDI0MiA3LjUyNzY5IDEwLjEwOTJWMTkuMzEwNkM3LjUyNTE5IDE5Ljc3ODEgNy43NzUxOSAyMC4yMTE5IDguMTgxNDUgMjAuNDQzMUwxNy45MDU0IDI2LjA1N0wxNC41MzkxIDI4LjAwMDhDMTQuNTA1MyAyOC4wMjMzIDE0LjQ2MjggMjguMDI3IDE0LjQyNTMgMjguMDEwOEw2LjM3MjY2IDIzLjM1ODJDMi43OTM4MyAyMS4yODU2IDEuNTY2MzEgMTYuNzA2OCAzLjYyODg1IDEzLjEyMTdMMy42MzAxIDEzLjEyMDVaTTMxLjI4ODIgMTkuNTU2OUwyMS41NjQyIDEzLjk0MTdMMjQuOTMwNiAxMS45OTkyQzI0Ljk2NDMgMTEuOTc2NyAyNS4wMDY4IDExLjk3MjkgMjUuMDQ0MyAxMS45ODkyTDMzLjA5NyAxNi42MzhDMzYuNjgyMSAxOC43MDkzIDM3LjkxMDggMjMuMjk1NyAzNS44Mzk1IDI2Ljg4MDhDMzQuOTYzMyAyOC4zOTgzIDMzLjU4MzIgMjkuNTYwOCAzMS45Mzk1IDMwLjE2NThWMjAuNjg5NEMzMS45NDMyIDIwLjIyMTkgMzEuNjk0NSAxOS43ODk0IDMxLjI4OTQgMTkuNTU2OUgzMS4yODgyWk0zNC42MzgzIDE0LjUxNDJDMzQuNTc5NSAxNC40NzggMzQuNDc1OCAxNC40MTU1IDM0LjQwMiAxNC4zNzNMMjYuNDM2OCA5Ljc3Mjg5QzI2LjAzMzEgOS41MzY2NCAyNS41MzMxIDkuNTM2NjQgMjUuMTI4MSA5Ljc3Mjg5TDE1LjQwNDEgMTUuMzg4VjExLjUwMDRDMTUuNDAxNiAxMS40NjA0IDE1LjQyMDQgMTEuNDIxNyAxNS40NTE2IDExLjM5NjdMMjMuNTAzIDYuNzUxNThDMjcuMDg5NCA0LjY4Mjc5IDMxLjY3NDUgNS45MTQwNiAzMy43NDIgOS41MDE2NEMzNC42MTU4IDExLjAxNjcgMzQuOTMyIDEyLjc5MDUgMzQuNjM1OCAxNC41MTQySDM0LjYzODNaTTEzLjU3NDEgMjEuNDQzMUwxMC4yMDY1IDE5LjQ5OTRDMTAuMTcwMiAxOS40ODE5IDEwLjE0NjUgMTkuNDQ2OCAxMC4xNDE1IDE5LjQwNjhWMTAuMTA3OUMxMC4xNDQgNS45Njc4MSAxMy41MDI4IDIuNjEyNzQgMTcuNjQyOSAyLjYxNTI0QzE5LjM5NDIgMi42MTUyNCAyMS4wODkyIDMuMjMwMjUgMjIuNDM1NSA0LjM1MDI4QzIyLjM3NDMgNC4zODI3OCAyMi4yNjkzIDQuNDQxNTMgMjIuMTk5MiA0LjQ4NDAzTDE0LjIzNDEgOS4wODQxM0MxMy44MjY2IDkuMzE1MzggMTMuNTc2NiA5Ljc0Nzg5IDEzLjU3OTEgMTAuMjE2N0wxMy41NzQxIDIxLjQ0MDZWMjEuNDQzMVpNMTUuNDAyOSAxNy41MDA2TDE5LjczNDIgMTQuOTk5M0wyNC4wNjU1IDE3LjQ5OTNWMjIuNTAwN0wxOS43MzQyIDI1LjAwMDdMMTUuNDAyOSAyMi41MDA3VjE3LjUwMDZaIiBmaWxsPSIjN0Q3RDg3Ii8+Cjwvc3ZnPgo="
                    },
                    "displayName": "OpenAI Chat Model",
                    "typeVersion": 1,
                    "nodeCategories": [
                        {
                            "id": 25,
                            "name": "AI"
                        },
                        {
                            "id": 26,
                            "name": "Langchain"
                        }
                    ]
                },
                {
                    "id": 1179,
                    "icon": "fa:code",
                    "name": "@n8n/n8n-nodes-langchain.outputParserStructured",
                    "codex": {
                        "data": {
                            "alias": [
                                "json",
                                "zod"
                            ],
                            "resources": {
                                "primaryDocumentation": [
                                    {
                                        "url": "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/"
                                    }
                                ]
                            },
                            "categories": [
                                "AI",
                                "Langchain"
                            ],
                            "subcategories": {
                                "AI": [
                                    "Output Parsers"
                                ]
                            }
                        }
                    },
                    "group": "[\"transform\"]",
                    "defaults": {
                        "name": "Structured Output Parser"
                    },
                    "iconData": {
                        "icon": "code",
                        "type": "icon"
                    },
                    "displayName": "Structured Output Parser",
                    "typeVersion": 1,
                    "nodeCategories": [
                        {
                            "id": 25,
                            "name": "AI"
                        },
                        {
                            "id": 26,
                            "name": "Langchain"
                        }
                    ]
                }
            ]
        }
```

### Also Known As

> n8n workflow scraper, scrape n8n templates, n8n automation extractor, Apify n8n actor, download n8n workflows, keyword search n8n templates, import n8n workflows, automation ideas

# Actor input Schema

## `category` (type: `string`):

The workflow category to scrape from n8n.io

## `search_query` (type: `string`):

Optional search term to filter workflows within the selected category

## `store_only_importable` (type: `boolean`):

If true, only workflows that can be imported into n8n will be stored. If false, all workflows in the category and search query will be stored, regardless of importability.

## `sort_option` (type: `string`):

How to sort the workflows. Relevancy only works when a search query is provided.

## `sort_direction` (type: `string`):

Direction to sort workflows (does not apply to relevancy sorting)

## `max_workflows` (type: `integer`):

Maximum number of workflows to scrape. Set to 0 for no limit.

## Actor input object example

```json
{
  "category": "ai",
  "store_only_importable": true,
  "sort_option": "most_recent",
  "sort_direction": "desc",
  "max_workflows": 100
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "search_query": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("datavoyantlab/n8n-templates-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "search_query": "" }

# Run the Actor and wait for it to finish
run = client.actor("datavoyantlab/n8n-templates-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "search_query": ""
}' |
apify call datavoyantlab/n8n-templates-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=datavoyantlab/n8n-templates-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "n8n Template Scraper",
        "description": "Scrape n8n.io workflow template with this Apify actor. Filter by category (AI, Marketing, DevOps), sort by popularity & get structured data with importable JSONs for developers & businesses",
        "version": "0.0",
        "x-build-id": "qGAfhTDncvYFUoK6O"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datavoyantlab~n8n-templates-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datavoyantlab-n8n-templates-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/datavoyantlab~n8n-templates-scraper/runs": {
            "post": {
                "operationId": "runs-sync-datavoyantlab-n8n-templates-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/datavoyantlab~n8n-templates-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-datavoyantlab-n8n-templates-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "category"
                ],
                "properties": {
                    "category": {
                        "title": "Category",
                        "enum": [
                            "ai",
                            "secops",
                            "sales",
                            "it-ops",
                            "marketing",
                            "engineering",
                            "devops",
                            "building-blocks",
                            "design",
                            "finance",
                            "hr",
                            "other",
                            "product",
                            "support"
                        ],
                        "type": "string",
                        "description": "The workflow category to scrape from n8n.io",
                        "default": "ai"
                    },
                    "search_query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Optional search term to filter workflows within the selected category"
                    },
                    "store_only_importable": {
                        "title": "Store Only Importable Workflows",
                        "type": "boolean",
                        "description": "If true, only workflows that can be imported into n8n will be stored. If false, all workflows in the category and search query will be stored, regardless of importability.",
                        "default": true
                    },
                    "sort_option": {
                        "title": "Sort Option",
                        "enum": [
                            "most_recent",
                            "popularity",
                            "relevancy"
                        ],
                        "type": "string",
                        "description": "How to sort the workflows. Relevancy only works when a search query is provided.",
                        "default": "most_recent"
                    },
                    "sort_direction": {
                        "title": "Sort Direction",
                        "enum": [
                            "desc",
                            "asc"
                        ],
                        "type": "string",
                        "description": "Direction to sort workflows (does not apply to relevancy sorting)",
                        "default": "desc"
                    },
                    "max_workflows": {
                        "title": "Maximum Workflows",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of workflows to scrape. Set to 0 for no limit.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
