Google Maps-Geschäfte mit Apify und Firecrawl scrapen und Kontaktdaten extrahieren

Experte

Dies ist ein Sales, Marketing-Bereich Automatisierungsworkflow mit 18 Nodes. Hauptsächlich werden If, Code, Wait, Filter, HttpRequest und andere Nodes verwendet. Google Maps Unternehmensinformationen scrapen und Kontaktinformationen extrahieren mit Apify und Firecrawl

Voraussetzungen
  • Möglicherweise sind Ziel-API-Anmeldedaten erforderlich
  • Google Sheets API-Anmeldedaten
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "95RHN758KyIlB84T",
  "meta": {
    "instanceId": "8d41476c63702cd0f2be55363b48153c5d4820bb18197ca147e7be50ef236112",
    "templateCredsSetupCompleted": true
  },
  "name": "Google Maps business scraper with contact extraction via Apify and Firecrawl",
  "tags": [],
  "nodes": [
    {
      "id": "17ab0386-4f7f-4f72-ab28-399febe4bf84",
      "name": "Zeitplan-Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        0,
        -125
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes",
              "minutesInterval": 30
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "2e7080b6-a5a4-4571-933f-3a33979037e8",
      "name": "Schleife bis Abschluss",
      "type": "n8n-nodes-base.if",
      "position": [
        1100,
        -125
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "loose"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "de704919-205a-470f-a417-b297fbbdbaf8",
              "operator": {
                "type": "string",
                "operation": "notEquals"
              },
              "leftValue": "={{ $json.data.status }}",
              "rightValue": "SUCCEEDED"
            }
          ]
        },
        "looseTypeValidation": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "3e062954-93b9-48d7-b5dc-29ff579793af",
      "name": "Ausstehende Abfragen lesen",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        220,
        -125
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "false",
              "lookupColumn": "Status"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=0",
          "cachedResultName": "Query"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk",
          "cachedResultName": "Google Maps Scraper"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "V4NHfo08zBK4IW4e",
          "name": "[Naveen]Google Sheets account"
        }
      },
      "typeVersion": 4.2,
      "alwaysOutputData": true
    },
    {
      "id": "63d7b375-c4a6-42ae-b9ef-51f963edaa72",
      "name": "Apify-Scraping-Job starten",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        440,
        -125
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/compass~crawler-google-places/runs",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"searchStringsArray\": [\n    \"restaurant\"\n  ],\n  \"locationQuery\": \"New York, USA\",\n  \"maxCrawledPlacesPerSearch\": 15,\n  \"language\": \"en\",\n  \"maximumLeadsEnrichmentRecords\": 0,\n  \"maxImages\": 0\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpQueryAuth": {
          "id": "Zg8dzYM9LryztYYp",
          "name": "[Apify/Sean]Query Auth"
        },
        "httpHeaderAuth": {
          "id": "wQYxWVdhRcoCOOit",
          "name": "[Apify/Sean]Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "958eb9fc-14f5-41f1-9055-10e0f889c039",
      "name": "Auf Job-Erfolg warten",
      "type": "n8n-nodes-base.wait",
      "position": [
        660,
        -125
      ],
      "webhookId": "97a65079-8ee5-45a2-9de0-afd263bbbe34",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "32fa03e3-a5ac-4ae3-b03a-2d99cb5d3079",
      "name": "Scraping-Status prüfen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        880,
        -200
      ],
      "parameters": {
        "url": "=https://api.apify.com/v2/actor-runs/{{ $json.data.id }}",
        "options": {
          "timeout": 10000
        },
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpQueryAuth": {
          "id": "Zg8dzYM9LryztYYp",
          "name": "[Apify/Sean]Query Auth"
        },
        "httpHeaderAuth": {
          "id": "wQYxWVdhRcoCOOit",
          "name": "[Apify/Sean]Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "97c84abb-c21e-497c-a2eb-1bf4b01db0ca",
      "name": "Gescrapte Ergebnisse abrufen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1320,
        -125
      ],
      "parameters": {
        "url": "=https://api.apify.com/v2/datasets/{{ $json.data.defaultDatasetId }}/items",
        "options": {
          "timeout": 10000
        },
        "sendHeaders": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpQueryAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            },
            {
              "name": "Accept",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpQueryAuth": {
          "id": "Zg8dzYM9LryztYYp",
          "name": "[Apify/Sean]Query Auth"
        },
        "httpHeaderAuth": {
          "id": "wQYxWVdhRcoCOOit",
          "name": "[Apify/Sean]Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "383d8508-54ba-4fbf-9d4b-f13487d1ff25",
      "name": "Unternehmensdaten speichern",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1540,
        -125
      ],
      "parameters": {
        "columns": {
          "value": {
            "phone": "={{ $json.phone }}",
            "title": "={{ $json.title }}",
            "status": "false",
            "address": "={{ $json.address }}",
            "website": "={{ $json.website }}",
            "categoryName": "={{ $json.categoryName }}",
            "searchString": "={{ $json.searchString }}"
          },
          "schema": [
            {
              "id": "searchString",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "searchString",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "categoryName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "categoryName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "searchString"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1948906848,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=1948906848",
          "cachedResultName": "Data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk",
          "cachedResultName": "Google Maps Scraper"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "V4NHfo08zBK4IW4e",
          "name": "[Naveen]Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "cd083a40-2270-44e2-8683-ae3b4d5b85a8",
      "name": "Unternehmen mit Websites filtern",
      "type": "n8n-nodes-base.filter",
      "position": [
        1760,
        -125
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "2218f0be-2c48-4a1a-bd21-8bdb67c495a1",
              "operator": {
                "type": "string",
                "operation": "notEmpty",
                "singleValue": true
              },
              "leftValue": "={{ $json.website }}",
              "rightValue": ""
            },
            {
              "id": "d0ef3194-ee94-45c5-b9c3-5db32f08d1b5",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.status }}",
              "rightValue": "false"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "234a63b0-3741-43d2-8a8b-ac29d6137ddb",
      "name": "Stapelverarbeitungslogik",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1980,
        -125
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "63e8e91a-6012-4073-b03d-2158672288ee",
      "name": "Website-Inhalte scrapen",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2260,
        -220
      ],
      "parameters": {
        "url": "https://api.firecrawl.dev/v1/scrape",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"url\": \"{{ $json.website }}\",\n  \"formats\": [\n    \"html\"\n  ]\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBearerAuth"
      },
      "credentials": {
        "httpBearerAuth": {
          "id": "dIJc7Mqjejgs6m3x",
          "name": "[Firecrawl/Naveen]Bearer Auth"
        },
        "httpHeaderAuth": {
          "id": "wQYxWVdhRcoCOOit",
          "name": "[Apify/Sean]Header Auth account"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "d9c1b4dc-c741-4dff-a9cd-0dd6527d514a",
      "name": "Kontaktinformationen extrahieren",
      "type": "n8n-nodes-base.code",
      "position": [
        2480,
        -220
      ],
      "parameters": {
        "jsCode": "// N8N Code Node - Extract emails, LinkedIn, Facebook, Instagram for single item\nconst item = $input.first();\n\n// Get the text content to search (adjust field names as needed)\nconst textContent = item.json.data.html;\n\n// Initialize result object\nconst result = {\n  website: $('Batch Processing Logic').first().json.website,\n  emails: \"None\",\n  linkedin: \"None\", \n  facebook: \"None\",\n  instagram: \"None\",\n  twitter: \"None\"\n};\n\n// Email extraction regex - matches common email patterns\nconst emailRegex = /\\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z|a-z]{2,}\\b/gi;\nconst emails = textContent.match(emailRegex);\n\nif (emails && emails.length > 0) {\n  // Remove duplicates and filter out common non-email matches\n  const uniqueEmails = [...new Set(emails)].filter(email => {\n    const lowerEmail = email.toLowerCase();\n    return !lowerEmail.includes('example.com') && \n           !lowerEmail.includes('test@') &&\n           !lowerEmail.includes('noreply@') &&\n           !lowerEmail.includes('no-reply@') &&\n           lowerEmail.length > 5;\n  });\n  \n  if (uniqueEmails.length > 0) {\n    result.emails = uniqueEmails.length === 1 ? uniqueEmails[0] : uniqueEmails.join(', ');\n  }\n}\n\n// LinkedIn extraction - improved pattern\nconst linkedinRegex = /(?:https?:\\/\\/)?(?:www\\.)?linkedin\\.com\\/(?:in\\/|company\\/|pub\\/)[a-zA-Z0-9\\-._]+\\/?/gi;\nconst linkedinMatches = textContent.match(linkedinRegex);\nif (linkedinMatches && linkedinMatches.length > 0) {\n  const cleanLinkedin = linkedinMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.linkedin = cleanLinkedin;\n}\n\n// Facebook extraction - improved to match numeric IDs and usernames\nconst facebookRegex = /(?:https?:\\/\\/)?(?:www\\.|m\\.|mobile\\.)?facebook\\.com\\/(?:[^\\/\\s]+\\/)*[^\\/\\s?#]+/gi;\nconst facebookMatches = textContent.match(facebookRegex);\nif (facebookMatches && facebookMatches.length > 0) {\n  const cleanFacebook = facebookMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.facebook = cleanFacebook;\n}\n\n// Instagram extraction - improved to match various URL formats\nconst instagramRegex = /(?:https?:\\/\\/)?(?:www\\.)?instagram\\.com\\/[a-zA-Z0-9\\-._]+\\/?/gi;\nconst instagramMatches = textContent.match(instagramRegex);\nif (instagramMatches && instagramMatches.length > 0) {\n  const cleanInstagram = instagramMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.instagram = cleanInstagram;\n}\n\n// Twitter/X extraction - improved to match usernames properly\nconst twitterRegex = /(?:https?:\\/\\/)?(?:www\\.)?(?:twitter\\.com|x\\.com)\\/[a-zA-Z0-9_]+\\/?/gi;\nconst twitterMatches = textContent.match(twitterRegex);\nif (twitterMatches && twitterMatches.length > 0) {\n  const cleanTwitter = twitterMatches[0].replace(/^(?:https?:\\/\\/)?(?:www\\.)?/i, 'https://www.');\n  result.twitter = cleanTwitter;\n}\n\n// Alternative extraction for social handles without full URLs\n// Look for @username patterns for Instagram and Twitter\nif (result.instagram === \"None\") {\n  const igHandleRegex = /@([a-zA-Z0-9._]{1,30})/gi;\n  const igHandles = textContent.match(igHandleRegex);\n  if (igHandles && igHandles.length > 0) {\n    const username = igHandles[0].replace('@', '');\n    if (username.length > 0 && !username.includes(' ')) {\n      result.instagram = `https://www.instagram.com/${username}`;\n    }\n  }\n}\n\n// Look for Twitter handles without full URLs\nif (result.twitter === \"None\") {\n  const twitterHandleRegex = /@([a-zA-Z0-9_]{1,15})/gi;\n  const twitterHandles = textContent.match(twitterHandleRegex);\n  if (twitterHandles && twitterHandles.length > 0) {\n    const username = twitterHandles[0].replace('@', '');\n    if (username.length > 0 && !username.includes(' ')) {\n      result.twitter = `https://www.x.com/${username}`;\n    }\n  }\n}\n\n// Clean up URLs - remove trailing slashes and parameters\n['linkedin', 'facebook', 'instagram', 'twitter'].forEach(platform => {\n  if (result[platform] !== \"None\") {\n    result[platform] = result[platform].split('?')[0].split('#')[0].replace(/\\/$/, '');\n  }\n});\n\nreturn result;"
      },
      "typeVersion": 2
    },
    {
      "id": "32ef5f5d-6457-4edc-9299-afea61af4784",
      "name": "Kontaktdetails speichern",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2700,
        -220
      ],
      "parameters": {
        "columns": {
          "value": {
            "emails": "={{ $json.emails }}",
            "twitter": "={{ $json.twitter }}",
            "website": "={{ $json.website }}",
            "facebook": "={{ $json.facebook }}",
            "linkedin": "={{ $json.linkedin }}",
            "instagram": "={{ $json.instagram }}"
          },
          "schema": [
            {
              "id": "website",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "emails",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "emails",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "linkedin",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "linkedin",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "facebook",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "facebook",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "instagram",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "instagram",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "twitter",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "twitter",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 2056137853,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=2056137853",
          "cachedResultName": "Details"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk",
          "cachedResultName": "Google Maps Scraper"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "V4NHfo08zBK4IW4e",
          "name": "[Naveen]Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "374d7e2f-6e14-4dd1-a51a-f0cce37945d8",
      "name": "Als verarbeitet markieren",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2920,
        -160
      ],
      "parameters": {
        "columns": {
          "value": {
            "status": "true",
            "website": "={{ $json.website }}"
          },
          "schema": [
            {
              "id": "searchString",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "searchString",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "categoryName",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "categoryName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "address",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hasWebsite",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "hasWebsite",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "status",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "status",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": true,
              "required": false,
              "displayName": "row_number",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "website"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 1948906848,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit#gid=1948906848",
          "cachedResultName": "Data"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=drivesdk",
          "cachedResultName": "Google Maps Scraper"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "V4NHfo08zBK4IW4e",
          "name": "[Naveen]Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "52c246a4-c483-4539-b22d-f4b046c16724",
      "name": "Haftnotiz",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        20,
        -360
      ],
      "parameters": {
        "color": 4,
        "width": 640,
        "height": 180,
        "content": "## 🚀 INITIALIZATION PHASE\n- Triggers every 30 minutes\n- Reads unprocessed records from [Google Sheet](https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=sharing)\n- Starts Google Places scraper for restaurants\n- Waits for completion"
      },
      "typeVersion": 1
    },
    {
      "id": "2983ac2d-5627-4ab1-9fbf-c09ed8886bf6",
      "name": "Haftnotiz1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        940,
        -420
      ],
      "parameters": {
        "width": 660,
        "height": 180,
        "content": "## 📊 DATA COLLECTION PHASE\n- Monitors scraper job status\n- Loops until job completes\n- Fetches scraped restaurant data\n- Saves to \"Data\" sheet in [Google Sheets](https://docs.google.com/spreadsheets/d/1DHezdcetT0c3Ie1xB3z3jDc5WElsLN87K4J9EQDef9g/edit?usp=sharing)"
      },
      "typeVersion": 1
    },
    {
      "id": "dc13180b-cf28-44a1-b6e7-c4f0c00f57c2",
      "name": "Haftnotiz2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1940,
        -460
      ],
      "parameters": {
        "color": 6,
        "width": 740,
        "height": 200,
        "content": "## 🌐 WEBSITE PROCESSING PHASE\n- Filters restaurants with valid websites\n- Loops through each website\n- Scrapes website content with Firecrawl\n- Extracts contact information (emails, social media)\n- Saves to \"Details\" sheet and marks as processed"
      },
      "typeVersion": 1
    },
    {
      "id": "7a23b11a-22ce-4816-a336-6cd28a90aa49",
      "name": "Haftnotiz3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2260,
        80
      ],
      "parameters": {
        "width": 580,
        "height": 120,
        "content": "## 🔄 LOOPS\n**Status Check Loop**: Continues until scraper job is complete\n**Website Processing Loop**: Processes each restaurant website individually"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "b94bf772-530d-4a3c-b024-795c2a7cfe4a",
  "connections": {
    "17ab0386-4f7f-4f72-ab28-399febe4bf84": {
      "main": [
        [
          {
            "node": "3e062954-93b9-48d7-b5dc-29ff579793af",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "374d7e2f-6e14-4dd1-a51a-f0cce37945d8": {
      "main": [
        [
          {
            "node": "234a63b0-3741-43d2-8a8b-ac29d6137ddb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "383d8508-54ba-4fbf-9d4b-f13487d1ff25": {
      "main": [
        [
          {
            "node": "cd083a40-2270-44e2-8683-ae3b4d5b85a8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2e7080b6-a5a4-4571-933f-3a33979037e8": {
      "main": [
        [
          {
            "node": "958eb9fc-14f5-41f1-9055-10e0f889c039",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "97c84abb-c21e-497c-a2eb-1bf4b01db0ca",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "3e062954-93b9-48d7-b5dc-29ff579793af": {
      "main": [
        [
          {
            "node": "63d7b375-c4a6-42ae-b9ef-51f963edaa72",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "32ef5f5d-6457-4edc-9299-afea61af4784": {
      "main": [
        [
          {
            "node": "374d7e2f-6e14-4dd1-a51a-f0cce37945d8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "958eb9fc-14f5-41f1-9055-10e0f889c039": {
      "main": [
        [
          {
            "node": "32fa03e3-a5ac-4ae3-b03a-2d99cb5d3079",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "32fa03e3-a5ac-4ae3-b03a-2d99cb5d3079": {
      "main": [
        [
          {
            "node": "2e7080b6-a5a4-4571-933f-3a33979037e8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "97c84abb-c21e-497c-a2eb-1bf4b01db0ca": {
      "main": [
        [
          {
            "node": "383d8508-54ba-4fbf-9d4b-f13487d1ff25",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "234a63b0-3741-43d2-8a8b-ac29d6137ddb": {
      "main": [
        [],
        [
          {
            "node": "63e8e91a-6012-4073-b03d-2158672288ee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "63e8e91a-6012-4073-b03d-2158672288ee": {
      "main": [
        [
          {
            "node": "d9c1b4dc-c741-4dff-a9cd-0dd6527d514a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "63d7b375-c4a6-42ae-b9ef-51f963edaa72": {
      "main": [
        [
          {
            "node": "958eb9fc-14f5-41f1-9055-10e0f889c039",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d9c1b4dc-c741-4dff-a9cd-0dd6527d514a": {
      "main": [
        [
          {
            "node": "32ef5f5d-6457-4edc-9299-afea61af4784",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "cd083a40-2270-44e2-8683-ae3b4d5b85a8": {
      "main": [
        [
          {
            "node": "234a63b0-3741-43d2-8a8b-ac29d6137ddb",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Experte - Vertrieb, Marketing

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Experte
Anzahl der Nodes18
Kategorie2
Node-Typen9
Schwierigkeitsbeschreibung

Für fortgeschrittene Benutzer, komplexe Workflows mit 16+ Nodes

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34