{
  "name": "Product Price Scraper to Telegram",
  "nodes": [
    {
      "parameters": {
        "triggerTimes": {},
        "mode": "everyXMinutes",
        "value": 30
      },
      "name": "Cron Trigger",
      "type": "n8n-nodes-base.cron",
      "typeVersion": 1,
      "position": [
        250,
        200
      ]
    },
    {
      "parameters": {
        "url": "https://www.mobile140.com/mobile-list",
        "responseFormat": "string"
      },
      "name": "Mobile140.com HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        450,
        100
      ]
    },
    {
      "parameters": {
        "functionCode": "const html = items[0].json.body;\nconst { JSDOM } = require('jsdom');\nconst dom = new JSDOM(html);\nconst document = dom.window.document;\nconst products = [];\ndocument.querySelectorAll('.product-item').forEach(prod => {\n  const name = prod.querySelector('.product-title')?.textContent.trim() || '';\n  const price = prod.querySelector('.product-price')?.textContent.trim() || '';\n  const colors = Array.from(prod.querySelectorAll('.product-colors span')).map(c => c.textContent.trim()).join(', ');\n  const link = prod.querySelector('a')?.href || '';\n  products.push({ name, price, colors, link });\n});\nreturn products.map(p => ({ json: p }));"
      },
      "name": "Scrape Mobile140.com",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        650,
        100
      ]
    },
    {
      "parameters": {
        "url": "https://gooshi.online/mobile-list",
        "responseFormat": "string"
      },
      "name": "Gooshi.online HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        450,
        300
      ]
    },
    {
      "parameters": {
        "functionCode": "const html = items[0].json.body;\nconst { JSDOM } = require('jsdom');\nconst dom = new JSDOM(html);\nconst document = dom.window.document;\nconst products = [];\ndocument.querySelectorAll('.product-card').forEach(prod => {\n  const name = prod.querySelector('.card-title')?.textContent.trim() || '';\n  const price = prod.querySelector('.card-price')?.textContent.trim() || '';\n  const colors = Array.from(prod.querySelectorAll('.card-colors span')).map(c => c.textContent.trim()).join(', ');\n  const link = prod.querySelector('a')?.href || '';\n  products.push({ name, price, colors, link });\n});\nreturn products.map(p => ({ json: p }));"
      },
      "name": "Scrape Gooshi.online",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        650,
        300
      ]
    },
    {
      "parameters": {
        "url": "https://www.technolife.com/mobile-list",
        "responseFormat": "string"
      },
      "name": "Technolife.com HTTP Request",
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 1,
      "position": [
        450,
        500
      ]
    },
    {
      "parameters": {
        "functionCode": "const html = items[0].json.body;\nconst { JSDOM } = require('jsdom');\nconst dom = new JSDOM(html);\nconst document = dom.window.document;\nconst products = [];\ndocument.querySelectorAll('.product-card').forEach(prod => {\n  const name = prod.querySelector('.card-title')?.textContent.trim() || '';\n  const price = prod.querySelector('.card-price')?.textContent.trim() || '';\n  const colors = Array.from(prod.querySelectorAll('.card-colors span')).map(c => c.textContent.trim()).join(', ');\n  const link = prod.querySelector('a')?.href || '';\n  products.push({ name, price, colors, link });\n});\nreturn products.map(p => ({ json: p }));"
      },
      "name": "Scrape Technolife.com",
      "type": "n8n-nodes-base.function",
      "typeVersion": 1,
      "position": [
        650,
        500
      ]
    },
    {
      "parameters": {
        "mode": "append"
      },
      "name": "Merge Products",
      "type": "n8n-nodes-base.merge",
      "typeVersion": 1,
      "position": [
        850,
        300
      ]
    },
    {
      "parameters": {
        "options": {
          "fileName": "products.xlsx",
          "fileFormat": "xlsx"
        }
      },
      "name": "Create Excel",
      "type": "n8n-nodes-base.spreadsheetFile",
      "typeVersion": 1,
      "position": [
        1050,
        300
      ]
    },
    {
      "parameters": {
        "operation": "sendFile",
        "chatId": "@erphoneheydar",
        "file": "={{$node[\"Create Excel\"].binary.file}}",
        "caption": "\u062c\u062f\u0648\u0644 \u0645\u062d\u0635\u0648\u0644\u0627\u062a \u0627\u0645\u0631\u0648\u0632"
      },
      "name": "Send Excel to Telegram",
      "type": "n8n-nodes-base.telegram",
      "typeVersion": 1,
      "position": [
        1250,
        300
      ]
    }
  ],
  "connections": {
    "Cron Trigger": {
      "main": [
        [
          {
            "node": "Mobile140.com HTTP Request",
            "type": "main",
            "index": 0
          },
          {
            "node": "Gooshi.online HTTP Request",
            "type": "main",
            "index": 0
          },
          {
            "node": "Technolife.com HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Mobile140.com HTTP Request": {
      "main": [
        [
          {
            "node": "Scrape Mobile140.com",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Mobile140.com": {
      "main": [
        [
          {
            "node": "Merge Products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gooshi.online HTTP Request": {
      "main": [
        [
          {
            "node": "Scrape Gooshi.online",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Gooshi.online": {
      "main": [
        [
          {
            "node": "Merge Products",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Technolife.com HTTP Request": {
      "main": [
        [
          {
            "node": "Scrape Technolife.com",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Technolife.com": {
      "main": [
        [
          {
            "node": "Merge Products",
            "type": "main",
            "index": 2
          }
        ]
      ]
    },
    "Merge Products": {
      "main": [
        [
          {
            "node": "Create Excel",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Excel": {
      "main": [
        [
          {
            "node": "Send Excel to Telegram",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}