{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "c2107b06-3dcf-42f2-81c3-e82261863bc3",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        -544
      ],
      "parameters": {
        "color": 7,
        "width": 1024,
        "height": 336,
        "content": "## Need more advanced automation solutions? Contact us for custom enterprise workflows!\n\n# Growth-AI.fr\n\n## https://www.linkedin.com/in/allanvaccarizi/\n## https://www.linkedin.com/in/hugo-marinier-%F0%9F%A7%B2-6537b633/"
      },
      "typeVersion": 1
    },
    {
      "id": "c9f5e50c-82a0-4602-9a09-7584d98eba8f",
      "name": "Sticky Note16",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        -960
      ],
      "parameters": {
        "color": 7,
        "width": 1024,
        "height": 400,
        "content": "![Logo Growth AI](https://cdn.prod.website-files.com/6825df5b20329ba581df4914/68d413c43f8729fa336568a6_Logo_horizontal.png)"
      },
      "typeVersion": 1
    },
    {
      "id": "08eace07-8664-4d83-bd45-cd02e36858f7",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -688,
        -192
      ],
      "parameters": {
        "width": 480,
        "height": 656,
        "content": "## Business scraping - Google maps\n\n### How it works\n\n1. A user submits a form specifying a city, country, and search query to kick off the workflow.\n2. The input is normalized into structured fields and existing data is read from a Google Sheet.\n3. The Apify Google Maps scraper API is called to fetch business listings matching the query.\n4. Key listing fields (title, price, category, address) are extracted and mapped.\n5. Results are appended or updated in the Google Sheet for storage and future use.\n\n### Setup steps\n\n- - [ ] Configure the **When Form Is Submitted** node with the desired form fields (city, country, query).\n- - [ ] Add Google Sheets credentials and set the correct spreadsheet/sheet in both **Read from Sheets** and **Append or Update in Sheets**.\n- - [ ] Add your Apify API key to the **Google maps apify** HTTP Request node (in the URL or Authorization header).\n- - [ ] Verify the Apify actor ID in the POST URL matches the Google Maps scraper actor you intend to use.\n\n### Customization\n\nYou can modify the **Set Listing Fields** node to capture additional data points returned by Apify (e.g. phone number, website, rating). You can also adjust the **Set City Country and Query** node to derive the query dynamically from form inputs."
      },
      "typeVersion": 1
    },
    {
      "id": "66cbf531-2841-434f-8738-0ef1e6f75388",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 592,
        "height": 352,
        "content": "## Form input and data setup\n\nCaptures user form submission, normalizes city/country/query fields, and reads existing records from Google Sheets to provide context for the scrape."
      },
      "typeVersion": 1
    },
    {
      "id": "93c73195-622d-4738-8e7a-8ffb4ed8fb1c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        -128
      ],
      "parameters": {
        "color": 7,
        "height": 352,
        "content": "## Scrape Google Maps listings\n\nSends a POST request to the Apify Google Maps scraper actor with the constructed query to retrieve business listings."
      },
      "typeVersion": 1
    },
    {
      "id": "46f91bbf-3a57-4f71-b075-c8f608f434de",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        768,
        -128
      ],
      "parameters": {
        "color": 7,
        "width": 384,
        "height": 352,
        "content": "## Map fields and save results\n\nExtracts and maps key listing fields (title, price, category, address) from the scraper response, then appends or updates the records in Google Sheets."
      },
      "typeVersion": 1
    },
    {
      "id": "c0aa6c2f-d42e-4934-84f5-5cdabc75817e",
      "name": "When Search Form Submitted",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -80,
        64
      ],
      "parameters": {
        "options": {},
        "formTitle": "Google Maps scraper",
        "formFields": {
          "values": [
            {
              "fieldLabel": "City (ex : Lyon)"
            },
            {
              "fieldLabel": "Country (ex : France)"
            },
            {
              "fieldLabel": "Query (ex : restaurant)"
            }
          ]
        },
        "formDescription": "Fill "
      },
      "typeVersion": 2.5
    },
    {
      "id": "e9fef986-80d5-4802-a46e-5dcb03e0a8e9",
      "name": "Set City Country and Query",
      "type": "n8n-nodes-base.set",
      "position": [
        128,
        64
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "beabc027-e9b8-4442-a81e-c5fdbcc41a5a",
              "name": "City",
              "type": "string",
              "value": "={{ $json['City (ex : Lyon)'] }}"
            },
            {
              "id": "b8ba4121-aa7c-48e2-ab56-85495d2732db",
              "name": "Country",
              "type": "string",
              "value": "={{ $json['Country (ex : France)'] }}"
            },
            {
              "id": "574d8031-d70e-4438-907c-e3a7d4765bc4",
              "name": "Query",
              "type": "string",
              "value": "={{ $json['Query (ex : restaurant)'] }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "7352bbf2-8ac5-42cf-9171-e4067c0877ce",
      "name": "Read Existing Listings from Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        320,
        64
      ],
      "parameters": {
        "title": "=Google maps scraping - {{ $('Set City Country and Query').item.json.City }}, {{ $('Set City Country and Query').item.json.Country }} {{ $('Set City Country and Query').item.json.Query }}",
        "options": {},
        "resource": "spreadsheet",
        "sheetsUi": {
          "sheetValues": [
            {
              "title": "={{ $('Set City Country and Query').item.json.City }}, {{ $('Set City Country and Query').item.json.Country }} {{ $('Set City Country and Query').item.json.Query }}"
            }
          ]
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "5b69c194-316b-4eee-a670-3f04b55fc865",
      "name": "Upsert Listings in Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1008,
        64
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "subTitle",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "subTitle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "price",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "price",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "categoryName",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "categoryName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "address",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "address",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "neighborhood",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "neighborhood",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "street",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "street",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "city",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "city",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "postalCode",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "postalCode",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "state",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "state",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "countryCode",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "countryCode",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "website",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "website",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phone",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "phone",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "phoneUnformatted",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "phoneUnformatted",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "claimThisBusiness",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "claimThisBusiness",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "location",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "location",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "locatedIn",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "locatedIn",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "floor",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "floor",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "plusCode",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "plusCode",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "menu",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "menu",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "servicesLink",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "servicesLink",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "totalScore",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "totalScore",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "permanentlyClosed",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "permanentlyClosed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "temporarilyClosed",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "temporarilyClosed",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "placeId",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "placeId",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "categories",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "categories",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "fid",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "fid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "cid",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "cid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reviewsCount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "reviewsCount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imagesCount",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "imagesCount",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imageCategories",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "imageCategories",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "scrapedAt",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "scrapedAt",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reserveTableUrl",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "reserveTableUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "googleFoodUrl",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "googleFoodUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hotelStars",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "hotelStars",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hotelDescription",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "hotelDescription",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "checkInDate",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "checkInDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "checkOutDate",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "checkOutDate",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "hotelAds",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "hotelAds",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "popularTimesLiveText",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "popularTimesLiveText",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "popularTimesLivePercent",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "popularTimesLivePercent",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "popularTimesHistogram",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "popularTimesHistogram",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "openingHours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "openingHours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "additionalOpeningHours",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "additionalOpeningHours",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "peopleAlsoSearch",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "peopleAlsoSearch",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "placesTags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "placesTags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reviewsTags",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "reviewsTags",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "additionalInfo",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "additionalInfo",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "gasPrices",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "gasPrices",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "url",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "searchPageUrl",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "searchPageUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "searchString",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "searchString",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "language",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "language",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "rank",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "rank",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "isAdvertisement",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "isAdvertisement",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "imageUrl",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "imageUrl",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "kgmid",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "kgmid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "reviewsDistribution",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "reviewsDistribution",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Read Existing Listings from Sheets').first().json.sheets[0].properties.sheetId }}"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $('Read Existing Listings from Sheets').first().json.spreadsheetId }}"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "c48e15b3-dcc5-42a6-ba2f-ecc93ae1daa5",
      "name": "Build Listing Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        816,
        64
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "448e0bc2-fec3-486b-9ee6-87ea57375d5f",
              "name": "Title",
              "type": "string",
              "value": "={{ $json.title }}"
            },
            {
              "id": "b470374e-2a8e-468d-a8f5-2a3554924f5e",
              "name": "Price",
              "type": "string",
              "value": "='{{ $json.price }}"
            },
            {
              "id": "c667abd6-945e-4a49-b44c-2fd738d76e7f",
              "name": "Category name",
              "type": "string",
              "value": "={{ $json.categoryName }}"
            },
            {
              "id": "bd84534d-a23b-48d9-b17a-55938a849d17",
              "name": "Adress",
              "type": "string",
              "value": "={{ $json.address }}"
            },
            {
              "id": "83d8b671-a523-4ccc-b7ce-63e523faed59",
              "name": "City",
              "type": "string",
              "value": "={{ $json.city }}"
            },
            {
              "id": "146ee417-9ec7-4aa8-9207-0d65cb5f6ef9",
              "name": "Postal code",
              "type": "string",
              "value": "={{ $json.postalCode }}"
            },
            {
              "id": "10ba9eab-39aa-4c01-a4ab-1250e2570db5",
              "name": "Website",
              "type": "string",
              "value": "={{ $json.website }}"
            },
            {
              "id": "7656a13a-15fb-4b19-a26c-28632112a386",
              "name": "Phone",
              "type": "string",
              "value": "='{{ $json.phone }}"
            },
            {
              "id": "ade532c5-6c23-400b-8212-5fa6b1a379f6",
              "name": "Permanentl closed",
              "type": "boolean",
              "value": "={{ $json.permanentlyClosed }}"
            },
            {
              "id": "67dc6f54-f41b-435d-932e-e39f40379985",
              "name": "Temporarily closed",
              "type": "boolean",
              "value": "={{ $json.temporarilyClosed }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "21f57da0-9382-449b-a868-3c76fab389a2",
      "name": "Scrape Google Maps via Apify",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        544,
        64
      ],
      "parameters": {
        "url": "https://api.apify.com/v2/acts/nwua9Gu5YrADL7ZDj/run-sync-get-dataset-items",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n    \"includeWebResults\": false,\n    \"language\": \"fr\",\n    \"locationQuery\": \"{{ $json.City }}, {{ $json.Country }}\",\n    \"maxCrawledPlacesPerSearch\": 50,\n    \"maximumLeadsEnrichmentRecords\": 0,\n    \"scrapeContacts\": false,\n    \"scrapeDirectories\": false,\n    \"scrapeImageAuthors\": false,\n    \"scrapePlaceDetailPage\": false,\n    \"scrapeReviewsPersonalData\": true,\n    \"scrapeSocialMediaProfiles\": {\n        \"facebooks\": false,\n        \"instagrams\": false,\n        \"tiktoks\": false,\n        \"twitters\": false,\n        \"youtubes\": false\n    },\n    \"scrapeTableReservationProvider\": false,\n    \"searchStringsArray\": [\n        \"{{ $json.Query }}\"\n    ],\n    \"skipClosedPlaces\": false,\n    \"verifyLeadsEnrichmentEmails\": false\n}",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "predefinedCredentialType",
        "nodeCredentialType": "apifyApi"
      },
      "credentials": {
        "apifyApi": {
          "name": "<your credential>"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "alwaysOutputData": true,
      "waitBetweenTries": 5000
    }
  ],
  "connections": {
    "Build Listing Fields": {
      "main": [
        [
          {
            "node": "Upsert Listings in Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set City Country and Query": {
      "main": [
        [
          {
            "node": "Read Existing Listings from Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When Search Form Submitted": {
      "main": [
        [
          {
            "node": "Set City Country and Query",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Google Maps via Apify": {
      "main": [
        [
          {
            "node": "Build Listing Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Existing Listings from Sheets": {
      "main": [
        [
          {
            "node": "Scrape Google Maps via Apify",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}