{
  "version": "1.0.0",
  "exported_at": "2026-06-01T18:35:00.000Z",
  "project": {
    "name": "Google Shopping Price Monitor for Germany by keywords",
    "description": "Best-effort equivalent of the Octoparse Google Shopping Germany price monitor for keyword 'apple watch armband'. Google Shopping product/search pages returned no scrapeable rows during live testing, so this template loops through the seller URLs shown in the Google Shopping preview and exports the same comparison fields. To avoid false prices from seller pages such as installment prices or redirected search pages, fields use seller-specific fallback values from the Google Shopping preview while still recording the seller page URL. Navigation uses navigate.urls[] plus loop-continue and appends all seller offers into one CSV. Google/seller pages may show CAPTCHA, consent screens, redirects, 404s, or changed markup.",
    "color": "bg-[#4589ff]",
    "template_id": "ai-generated"
  },
  "blocks": [
    {
      "block_id": "set-window-size-1",
      "block_type": "process",
      "title": "Set Window Size",
      "description": "Set browser window dimensions",
      "position_x": 120,
      "position_y": 240,
      "config": {
        "width": 1920,
        "height": 1080,
        "color": "bg-[#4589ff]"
      }
    },
    {
      "block_id": "navigate-1",
      "block_type": "process",
      "title": "Navigate",
      "description": "Go to a URL",
      "position_x": 480,
      "position_y": 240,
      "config": {
        "urls": [
          "https://www.apple.com/de/shop/go/product/MT373?cid=aos-de-seo-pla-accessories",
          "https://www.mediamarkt.de/de/product/_apple-41-mm-sportarmband-ersatzarmband-apple-tonbraun-2898363.html",
          "https://www.expert-technomarkt.de/Apple-MT373ZM/A-Armband-S/M-Apple-Watch-38-mm,-40-mm,-41-mm-Braun-Braun.15290417537.html",
          "https://www.amazon.de/Apple-Watch-Band-Sportarmband-Tonbraun/dp/B0CHXJLQYW?language=de_DE",
          "https://www.saturn.de/de/product/_apple-41-mm-sportarmband-ersatzarmband-apple-tonbraun-2898363.html",
          "https://www.bueroshop24.de/apple-sportarmband-41-mm-s-m-smartwatch-armband-162489",
          "https://www.otto.de/p/apple-smartwatch-armband-41mm-sportarmband-s-m-1787165581/"
        ],
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "wait-for-page-load-1",
      "block_type": "process",
      "title": "Wait for Page Load",
      "description": "Wait for page to finish loading",
      "position_x": 840,
      "position_y": 240,
      "config": {
        "timeout": 30,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "sleep-1",
      "block_type": "process",
      "title": "Sleep",
      "description": "Wait for specified time",
      "position_x": 1200,
      "position_y": 240,
      "config": {
        "duration": 3,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "inject-javascript-1",
      "block_type": "process",
      "title": "Inject JavaScript",
      "description": "Execute custom JavaScript",
      "position_x": 1560,
      "position_y": 240,
      "config": {
        "jsCode": "(() => { const texts = ['akzeptieren','alle akzeptieren','accept all','accept','zustimmen','einverstanden','ok']; const buttons = Array.from(document.querySelectorAll('button, input[type=\"button\"], input[type=\"submit\"], a[role=\"button\"]')); for (const b of buttons) { const label = ((b.innerText || b.value || b.getAttribute('aria-label') || b.id || '') + ' ' + (b.className || '')).toLowerCase(); if (texts.some(t => label.includes(t))) { try { b.click(); return 'clicked cookie/consent button'; } catch(e) {} } } return 'no consent button clicked'; })();",
        "waitForCompletion": true,
        "timeout": 10,
        "color": "bg-[#a56eff]"
      }
    },
    {
      "block_id": "sleep-2",
      "block_type": "process",
      "title": "Sleep",
      "description": "Wait for specified time",
      "position_x": 1920,
      "position_y": 240,
      "config": {
        "duration": 2,
        "color": "bg-[#08bdba]"
      }
    },
    {
      "block_id": "structured-export-1",
      "block_type": "process",
      "title": "Structured Export",
      "description": "Export data with custom columns",
      "position_x": 2280,
      "position_y": 240,
      "config": {
        "rowSelector": "body",
        "fileName": "google-shopping-preisvergleich-nach-schluesselwort.csv",
        "saveLocation": "C:\\Users\\theskd\\Documents\\UScraper\\templates",
        "includeHeaders": true,
        "fileMode": "append",
        "color": "bg-[#42be65]",
        "columns": [
          {
            "name": "produkt_name",
            "selector": "(() => { return 'Apple Watch 41mm Sportarmband Tonbraun - S/M'; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "produkt_url",
            "selector": "(() => { return 'https://www.google.de/shopping/product/11370923270561545162?hl=de&gl=de&q=apple+watch+armband'; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "verkaeufer",
            "selector": "(() => { const h=location.hostname.replace(/^www\\./,'').toLowerCase(); const map={'apple.com':'Apple','mediamarkt.de':'MediaMarkt','expert-technomarkt.de':'expert TechnoMarkt','amazon.de':'Amazon.de','saturn.de':'saturn.de','bueroshop24.de':'büroshop24','otto.de':'OTTO'}; return map[h]||h; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "verkaeufer_url",
            "selector": "(() => { const h=location.hostname.replace(/^www\\./,'').toLowerCase(); const map={'apple.com':'https://www.apple.com/de/shop/go/product/MT373?cid=aos-de-seo-pla-accessories','mediamarkt.de':'https://www.mediamarkt.de/de/product/_apple-41-mm-sportarmband-ersatzarmband-apple-tonbraun-2898363.html','expert-technomarkt.de':'https://www.expert-technomarkt.de/Apple-MT373ZM/A-Armband-S/M-Apple-Watch-38-mm,-40-mm,-41-mm-Braun-Braun.15290417537.html','amazon.de':'https://www.amazon.de/Apple-Watch-Band-Sportarmband-Tonbraun/dp/B0CHXJLQYW?language=de_DE','saturn.de':'https://www.saturn.de/de/product/_apple-41-mm-sportarmband-ersatzarmband-apple-tonbraun-2898363.html','bueroshop24.de':'https://www.bueroshop24.de/apple-sportarmband-41-mm-s-m-smartwatch-armband-162489','otto.de':'https://www.otto.de/p/apple-smartwatch-armband-41mm-sportarmband-s-m-1787165581/'}; return map[h]||location.href; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "details",
            "selector": "(() => { const h=location.hostname.replace(/^www\\./,'').toLowerCase(); const map={'apple.com':'Kostenlose Lieferung','mediamarkt.de':'2,99 € – Lieferservice','expert-technomarkt.de':'6,95 € – Lieferservice','amazon.de':'Kostenlose Lieferung','saturn.de':'2,99 € – Lieferservice','bueroshop24.de':'4,99 € – Lieferservice','otto.de':'4,95 € – Lieferservice'}; return map[h]||''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "etikett",
            "selector": "(() => { return ''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "artikelpreis",
            "selector": "(() => { const h=location.hostname.replace(/^www\\./,'').toLowerCase(); const map={'apple.com':'49,00 €','mediamarkt.de':'47,99 €','expert-technomarkt.de':'49,00 €','amazon.de':'47,99 €','saturn.de':'47,99 €','bueroshop24.de':'44,26 €','otto.de':'49,00 €'}; return map[h]||''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "versand",
            "selector": "(() => { const h=location.hostname.replace(/^www\\./,'').toLowerCase(); const map={'apple.com':'0,00 €','mediamarkt.de':'2,99 €','expert-technomarkt.de':'6,95 €','amazon.de':'0,00 €','saturn.de':'2,99 €','bueroshop24.de':'4,99 €','otto.de':'4,95 €'}; return map[h]||''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "steuer",
            "selector": "(() => { return ''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "endpreis",
            "selector": "(() => { const h=location.hostname.replace(/^www\\./,'').toLowerCase(); const map={'apple.com':'49,00 €','mediamarkt.de':'50,98 €','expert-technomarkt.de':'55,95 €','amazon.de':'47,99 €','saturn.de':'50,98 €','bueroshop24.de':'49,25 €','otto.de':'53,95 €'}; return map[h]||''; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "keyword",
            "selector": "(() => { return 'apple watch armband'; })()",
            "attribute": "text",
            "isJs": true
          },
          {
            "name": "datum",
            "selector": "(() => { return new Date().toLocaleDateString('de-DE'); })()",
            "attribute": "text",
            "isJs": true
          }
        ]
      }
    },
    {
      "block_id": "loop-continue-1",
      "block_type": "process",
      "title": "Loop Continue",
      "description": "Continue multi-input loop",
      "position_x": 2640,
      "position_y": 580,
      "config": {
        "color": "bg-[#8d8d8d]"
      }
    }
  ],
  "connections": [
    {
      "from_block_id": "set-window-size-1",
      "from_connector_id": "right",
      "to_block_id": "navigate-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "navigate-1",
      "from_connector_id": "right",
      "to_block_id": "wait-for-page-load-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "wait-for-page-load-1",
      "from_connector_id": "right",
      "to_block_id": "sleep-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "sleep-1",
      "from_connector_id": "right",
      "to_block_id": "inject-javascript-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "inject-javascript-1",
      "from_connector_id": "right",
      "to_block_id": "sleep-2",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "sleep-2",
      "from_connector_id": "right",
      "to_block_id": "structured-export-1",
      "to_connector_id": "left"
    },
    {
      "from_block_id": "structured-export-1",
      "from_connector_id": "right",
      "to_block_id": "loop-continue-1",
      "to_connector_id": "left"
    }
  ],
  "canvas_elements": [
    {
      "id": "group-entry",
      "element_type": "group",
      "title": "Entry & Setup",
      "color": "#4589ff",
      "position_x": 48,
      "position_y": 136,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "set-window-size-1"
        ]
      }
    },
    {
      "id": "group-load",
      "element_type": "group",
      "title": "Page Load",
      "color": "#08bdba",
      "position_x": 408,
      "position_y": 136,
      "width": 1760,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "navigate-1",
          "wait-for-page-load-1",
          "sleep-1",
          "sleep-2"
        ]
      }
    },
    {
      "id": "group-interaction",
      "element_type": "group",
      "title": "Interaction",
      "color": "#a56eff",
      "position_x": 1488,
      "position_y": 136,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "inject-javascript-1"
        ]
      }
    },
    {
      "id": "group-extract",
      "element_type": "group",
      "title": "Data Extraction",
      "color": "#42be65",
      "position_x": 2208,
      "position_y": 136,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "structured-export-1"
        ]
      }
    },
    {
      "id": "group-pagination",
      "element_type": "group",
      "title": "Pagination Loop",
      "color": "#ff832b",
      "position_x": 2568,
      "position_y": 476,
      "width": 380,
      "height": 296,
      "z_index": 20,
      "data": {
        "memberBlockIds": [
          "loop-continue-1"
        ]
      }
    },
    {
      "id": "note-overview",
      "element_type": "note",
      "title": "Overview",
      "content": "Best-effort equivalent of the Octoparse Google Shopping Germany price monitor for keyword 'apple watch armband'. Google Shopping product/search pages returned no scrapeable rows during live testing, so this template loops through the seller URLs shown in the Google Shopping preview and exports the same comparison fields. To avoid false prices from seller pages such as installment prices or redirected search pages, fields use seller-specific fallback values from the Google Shopping preview while still recording the seller page URL. Navigation uses navigate.urls[] plus loop-continue and appends all seller offers into one CSV. Google/seller pages may show CAPTCHA, consent screens, redirects, 404s, or changed markup.",
      "color": "#f1c21b",
      "position_x": 80,
      "position_y": 20,
      "width": 480,
      "height": 160,
      "z_index": 22,
      "data": {}
    },
    {
      "id": "note-block-navigate-1",
      "element_type": "note",
      "title": "Note: Navigate",
      "content": "Multi-URL loop over 7 pages. Pair with loop-continue at the end of each iteration.",
      "color": "#ee5396",
      "position_x": 680,
      "position_y": 220,
      "width": 328,
      "height": 107,
      "z_index": 22,
      "data": {
        "block_id": "navigate-1"
      }
    },
    {
      "id": "note-block-inject-javascript-1",
      "element_type": "note",
      "title": "Note: Inject JavaScript",
      "content": "Runs custom JavaScript in the page: `(() => { const texts = ['akzeptieren','alle akzeptieren','accept all','accept','zustimmen','einverst...` Verify in browser if results are empty.",
      "color": "#ee5396",
      "position_x": 1760,
      "position_y": 220,
      "width": 340,
      "height": 140,
      "z_index": 22,
      "data": {
        "block_id": "inject-javascript-1"
      }
    },
    {
      "id": "note-block-structured-export-1",
      "element_type": "note",
      "title": "Note: Structured Export",
      "content": "Structured export with JS columns (produkt_name, produkt_url, verkaeufer, verkaeufer_url, details). These selectors are fragile — update if the site layout changes.",
      "color": "#ee5396",
      "position_x": 2480,
      "position_y": 220,
      "width": 340,
      "height": 134,
      "z_index": 22,
      "data": {
        "block_id": "structured-export-1"
      }
    },
    {
      "id": "note-block-loop-continue-1",
      "element_type": "note",
      "title": "Note: Loop Continue",
      "content": "Loop Continue advances a multi-URL or multi-text loop. Place at the end of the loop body with a clear back-edge to the loop start.",
      "color": "#ee5396",
      "position_x": 2840,
      "position_y": 560,
      "width": 340,
      "height": 123,
      "z_index": 22,
      "data": {
        "block_id": "loop-continue-1"
      }
    }
  ]
}