AutomationFlowsAI & RAG › Advanced Market Trends & Competitor Gpt-4o Intelligence Hub

Advanced Market Trends & Competitor Gpt-4o Intelligence Hub

ByCheng Siong Chin @cschin on n8n.io

Automated daily scraping of competitor websites, pricing pages, job postings, and press releases feeds into an AI analyzer powered by OpenAI or Claude to extract trends, insights, and key metrics. The analyzed results are stored in Google Sheets for historical tracking and…

Cron / scheduled trigger★★★★☆ complexityAI-powered29 nodesHTTP RequestAgentOpenAI ChatOutput Parser StructuredTool CodeHTTP Request ToolGoogle SheetsWhatsApp
AI & RAG Trigger: Cron / scheduled Nodes: 29 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #11783 — we link there as the canonical source.

This workflow follows the Agent → Google Sheets recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "9U0MdlqMVEl795LJ",
  "name": "Advanced Market Trends & Competitor GPT-4o Intelligence Hub",
  "tags": [],
  "nodes": [
    {
      "id": "51a85cb0-5d26-4bdd-b5a1-f8f58c35b9e1",
      "name": "Daily Competitor Scan",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -832,
        560
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 9
            }
          ]
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "674e6aaf-a7b1-448c-8693-9f04f240295e",
      "name": "Workflow Configuration",
      "type": "n8n-nodes-base.set",
      "position": [
        -656,
        560
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "id-1",
              "name": "competitorWebsiteUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Competitor main website URL__>"
            },
            {
              "id": "id-2",
              "name": "pricingPageUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Competitor pricing page URL__>"
            },
            {
              "id": "id-3",
              "name": "jobsPageUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Competitor careers/jobs page URL__>"
            },
            {
              "id": "id-4",
              "name": "pressReleaseUrl",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Competitor press releases/news page URL__>"
            },
            {
              "id": "id-5",
              "name": "recipientEmail",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Email address to receive intelligence reports__>"
            },
            {
              "id": "id-6",
              "name": "slackChannel",
              "type": "string",
              "value": "<__PLACEHOLDER_VALUE__Slack channel ID for reports__>"
            }
          ]
        },
        "includeOtherFields": true
      },
      "typeVersion": 3.4
    },
    {
      "id": "81806caa-6452-418c-b805-a15d9c60c1c3",
      "name": "Scrape Competitor Website",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -432,
        416
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.competitorWebsiteUrl }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "70513fd7-2435-4acf-b09b-69b49f1163ae",
      "name": "Scrape Pricing Page",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -432,
        560
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.pricingPageUrl }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "a466d0dc-1ffe-4af5-989a-499366d68b7b",
      "name": "Scrape Job Openings",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -432,
        704
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.jobsPageUrl }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "8aa28d40-ae3d-43f9-968c-e841281982b6",
      "name": "Scrape Press Releases",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -432,
        896
      ],
      "parameters": {
        "url": "={{ $('Workflow Configuration').first().json.pressReleaseUrl }}",
        "options": {
          "response": {
            "response": {
              "responseFormat": "text"
            }
          }
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "a5d7fe3e-24ca-4d79-b02f-c8330ff35794",
      "name": "Combine All Data",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        -176,
        480
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData"
      },
      "typeVersion": 1
    },
    {
      "id": "b52c8bd7-b87a-4e6a-a3d9-48c087f64430",
      "name": "AI Intelligence Analyzer",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        256,
        656
      ],
      "parameters": {
        "text": "=Analyze the following competitor data and provide actionable intelligence: {{ JSON.stringify($json) }}",
        "options": {
          "systemMessage": "You are an advanced competitive intelligence analyst specializing in market trends and competitor analysis.\n\nYour task is to:\n1. Analyze competitor website content, pricing changes, job openings, press releases, and product updates\n2. Detect pattern shifts and emerging trends across all data sources\n3. Compare current data with historical patterns using the Historical Data Comparison Tool\n4. Use the Web Research Tool to gather additional context when needed\n5. Predict potential competitor moves based on detected patterns\n6. Generate actionable intelligence recommendations\n\nProvide your analysis in the structured format defined by the output parser, including:\n- Key findings and pattern shifts\n- Competitor move predictions\n- Strategic recommendations\n- Risk assessment\n- Opportunity identification"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 3
    },
    {
      "id": "4c4b0c28-26cc-4de1-93c9-0de36c8fe765",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        80,
        880
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "id",
          "value": "gpt-4o"
        },
        "options": {
          "temperature": 0.3
        },
        "builtInTools": {}
      },
      "credentials": {
        "openAiApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "4f39d2f0-4ac6-449e-9717-038949daa79e",
      "name": "Intelligence Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        464,
        880
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"keyFindings\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Summary of key findings and pattern shifts detected\"\n\t\t},\n\t\t\"competitorMoves\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Predicted competitor moves based on analysis\"\n\t\t},\n\t\t\"strategicRecommendations\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Actionable strategic recommendations for the team\"\n\t\t},\n\t\t\"riskAssessment\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Assessment of potential risks and threats\"\n\t\t},\n\t\t\"opportunities\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Identified opportunities to capitalize on\"\n\t\t},\n\t\t\"confidenceScore\": {\n\t\t\t\"type\": \"number\",\n\t\t\t\"description\": \"Confidence score of predictions (0-100)\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "bc62b5b6-c846-4542-b8e3-41c8c02b5c04",
      "name": "Historical Data Comparison Tool",
      "type": "@n8n/n8n-nodes-langchain.toolCode",
      "position": [
        208,
        880
      ],
      "parameters": {
        "jsCode": "// Compare current data with historical patterns\nconst currentData = query;\n\n// Example analysis logic\nconst analysis = {\n  timestamp: new Date().toISOString(),\n  dataReceived: currentData,\n  comparison: \"Historical comparison analysis\",\n  trends: [],\n  changes: []\n};\n\n// Detect patterns and changes\nif (currentData && typeof currentData === 'string') {\n  analysis.trends.push('Data pattern detected');\n  analysis.changes.push('Change identified in competitor data');\n}\n\n// Return formatted analysis\nreturn JSON.stringify(analysis, null, 2);",
        "schemaType": "manual",
        "description": "Compare current competitor data with historical patterns to detect changes and trends. Returns comparison analysis.",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"data\": {\n\t\t\t\"type\": \"string\",\n\t\t\t\"description\": \"Current competitor data to compare with historical patterns\"\n\t\t}\n\t}\n}",
        "specifyInputSchema": true
      },
      "typeVersion": 1.3
    },
    {
      "id": "2ee5e077-21fc-4307-98ea-85845d811795",
      "name": "Web Research Tool",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        336,
        880
      ],
      "parameters": {
        "url": "={{ $fromAI('url', 'The URL to fetch information from') }}",
        "options": {},
        "toolDescription": "Research additional information about competitors, market trends, or industry news from the web"
      },
      "typeVersion": 4.3
    },
    {
      "id": "952161d7-2b42-4543-a823-fca8ae63afec",
      "name": "Route by Confidence Score",
      "type": "n8n-nodes-base.switch",
      "position": [
        1392,
        864
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "conditions": {
                "options": {
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "",
                    "rightValue": ""
                  }
                ]
              }
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "56c2854a-9195-4497-b6aa-c729d48139ff",
      "name": "Calculate Trend Metrics",
      "type": "n8n-nodes-base.code",
      "position": [
        112,
        656
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "d13913ad-f187-4d13-990b-a2abe51d7645",
      "name": "Store Historical Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1040,
        496
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "319f6aee-fe77-4896-a81c-cc4fa61d07ba",
      "name": "Retrieve Historical Data",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -192,
        752
      ],
      "parameters": {
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.7
    },
    {
      "id": "bdbad3a7-c05c-476d-aec0-a35c6f067760",
      "name": "Send Critical Alert via WhatsApp",
      "type": "n8n-nodes-base.whatsApp",
      "position": [
        1760,
        864
      ],
      "parameters": {},
      "credentials": {
        "whatsAppApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "2bd9fd40-b35a-4458-86d0-3c7d8d5b2bd8",
      "name": "Format WhatsApp Message",
      "type": "n8n-nodes-base.set",
      "position": [
        1584,
        864
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "7c623870-dff2-4669-b56d-165d70437a70",
      "name": "Enrich with Metrics",
      "type": "n8n-nodes-base.set",
      "position": [
        688,
        656
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3.4
    },
    {
      "id": "0779c850-3d60-473c-9531-70f14af827bc",
      "name": "Check for Major Changes",
      "type": "n8n-nodes-base.if",
      "position": [
        1248,
        656
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 2.3
    },
    {
      "id": "f728c5d7-9097-4ff2-b3fd-e9160c954e53",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        0
      ],
      "parameters": {
        "color": 3,
        "width": 608,
        "height": 208,
        "content": "\n## Prerequisites\nOpenAI/Claude API account, Google Sheets access, Gmail account, WhatsApp Business API, web scraping enabled\n\n## Use Cases\nMarket share monitoring, pricing strategy updates, competitor talent movement tracking, industry trend reports"
      },
      "typeVersion": 1
    },
    {
      "id": "8b1fc8e0-c5fb-4c67-9e72-aeffede4b9fd",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        48,
        0
      ],
      "parameters": {
        "color": 4,
        "width": 432,
        "height": 224,
        "content": "## Setup Steps\n1. Configure the daily schedule trigger.\n2. Define competitor URLs using workflow variables.\n3. Add and configure the OpenAI or Claude API key.\n4. Authenticate Google Sheets \n5. Connect Gmail and WhatsApp Business API tokens.\n6. Test each scraper individually "
      },
      "typeVersion": 1
    },
    {
      "id": "79c41272-d903-43d7-9335-f594d2a0573a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -912,
        0
      ],
      "parameters": {
        "width": 944,
        "height": 240,
        "content": "## How It Works\nAutomated daily scraping continuously collects data from multiple competitor sources, including official websites, pricing pages, job postings, and press releases. This raw information is fed into an AI-powered analyzer using models such as OpenAI or Claude, which intelligently processes the content to extract meaningful trends, competitive signals, insights, and key performance metrics. The analyzed outputs are systematically stored in Google Sheets, enabling structured historical tracking, trend analysis, and longitudinal comparison over time. Results are then automatically distributed to relevant stakeholders through communication channels such as email or WhatsApp, ensuring timely visibility without manual intervention. By fully automating competitive intelligence collection, analysis, and reporting, this workflow removes the need for labor-intensive market research. \n"
      },
      "typeVersion": 1
    },
    {
      "id": "d14cd2eb-8bf5-45b6-9a03-72c7f3bfa610",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1136,
        0
      ],
      "parameters": {
        "color": 5,
        "width": 672,
        "content": "## Customization\nModify scrape targets, adjust AI prompt for different metrics, change alert frequency\n\n## Benefits\nReal-time competitive visibility, reduced manual research 15+ hours/week, faster decision-making"
      },
      "typeVersion": 1
    },
    {
      "id": "06ec4af6-403a-4ffc-9570-fffa0598b928",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        944,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 1008,
        "height": 800,
        "content": "## Store Historical & Alert Stakeholders\nArchive results in Google Sheets for longitudinal tracking & send alert\n**Why:** Enables trend analysis and evidence-based decision-making over time."
      },
      "typeVersion": 1
    },
    {
      "id": "8f47ce82-2e54-4768-b4fb-4a5ea6f9383a",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        576,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 352,
        "height": 816,
        "content": "## Calculate Metrics\nDerive competitive indicators and comparative scores.\n**Why:** Translates insights into measurable signals that support objective evaluation."
      },
      "typeVersion": 1
    },
    {
      "id": "b167a784-ce67-4ffb-89df-3ecd2ea0b2af",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        32,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 512,
        "height": 816,
        "content": "## AI Analysis\nProcess consolidated data through an LLM to extract trends, signals, and key insights.\n**Why:** Converts unstructured content into meaningful intelligence at scale."
      },
      "typeVersion": 1
    },
    {
      "id": "06817438-8fc1-4440-80b4-a7c48707dc95",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -240,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 256,
        "height": 832,
        "content": "## Consolidate Data\nMerge all collected inputs into a unified and structured dataset.\n**Why:** Eliminates fragmentation and enables consistent downstream analysis."
      },
      "typeVersion": 1
    },
    {
      "id": "47bc2d79-1238-4a9a-be02-0911f380a3e3",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        256
      ],
      "parameters": {
        "color": 7,
        "width": 624,
        "height": 832,
        "content": "## Scrape Multiple Sources\nCollect competitor data from websites, pricing pages, job listings, and press releases in parallel.\n**Why:** Ensures comprehensive and up-to-date coverage of competitor signals \n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "09c57305-2931-443a-b4e3-b4f58a42e2e9",
  "connections": {
    "Combine All Data": {
      "main": [
        [
          {
            "node": "Calculate Trend Metrics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Intelligence Analyzer",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Web Research Tool": {
      "ai_tool": [
        [
          {
            "node": "AI Intelligence Analyzer",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Enrich with Metrics": {
      "main": [
        [
          {
            "node": "Store Historical Data",
            "type": "main",
            "index": 0
          },
          {
            "node": "Check for Major Changes",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Job Openings": {
      "main": [
        [
          {
            "node": "Combine All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Pricing Page": {
      "main": [
        [
          {
            "node": "Combine All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Daily Competitor Scan": {
      "main": [
        [
          {
            "node": "Workflow Configuration",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Press Releases": {
      "main": [
        [
          {
            "node": "Combine All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Workflow Configuration": {
      "main": [
        [
          {
            "node": "Scrape Competitor Website",
            "type": "main",
            "index": 0
          },
          {
            "node": "Scrape Pricing Page",
            "type": "main",
            "index": 0
          },
          {
            "node": "Scrape Job Openings",
            "type": "main",
            "index": 0
          },
          {
            "node": "Scrape Press Releases",
            "type": "main",
            "index": 0
          },
          {
            "node": "Retrieve Historical Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Calculate Trend Metrics": {
      "main": [
        [
          {
            "node": "AI Intelligence Analyzer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check for Major Changes": {
      "main": [
        [
          {
            "node": "Route by Confidence Score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Format WhatsApp Message": {
      "main": [
        [
          {
            "node": "Send Critical Alert via WhatsApp",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Intelligence Analyzer": {
      "main": [
        [
          {
            "node": "Enrich with Metrics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve Historical Data": {
      "main": [
        [
          {
            "node": "Calculate Trend Metrics",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Route by Confidence Score": {
      "main": [
        [
          {
            "node": "Format WhatsApp Message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Scrape Competitor Website": {
      "main": [
        [
          {
            "node": "Combine All Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Intelligence Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Intelligence Analyzer",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Historical Data Comparison Tool": {
      "ai_tool": [
        [
          {
            "node": "AI Intelligence Analyzer",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Automated daily scraping of competitor websites, pricing pages, job postings, and press releases feeds into an AI analyzer powered by OpenAI or Claude to extract trends, insights, and key metrics. The analyzed results are stored in Google Sheets for historical tracking and…

Source: https://n8n.io/workflows/11783/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

This workflow automates end-to-end ESG (Environmental, Social, and Governance) sustainability reporting for enterprise sustainability teams, compliance officers, and green governance leads. It solves

Agent, OpenAI Chat, Output Parser Structured +12
AI & RAG

Top Branch Workflow The Data Scientist: Ingest: Pulls historical sales data from Google Sheets. Math Engine: Runs 7 statistical algorithms (e.g., Seasonal Naive, Linear Trend, Regression). It backtest

Output Parser Structured, OpenAI Chat, Agent +6
AI & RAG

This workflow automates supply chain monitoring and risk management by deploying multiple specialized AI agents to analyze different supply chain dimensions simultaneously. Designed for supply chain m

HTTP Request, Agent, OpenAI Chat +4
AI & RAG

This n8n workflow automates the process of creating and sending high-quality newsletters with images generated by a GPT image generator. It is triggered on a schedule. 1 n8n workflow (json) 1 Setup tu

Output Parser Structured, OpenAI Chat, Google Cloud Storage +5
AI & RAG

This workflow automates energy portfolio governance for energy managers, sustainability teams, and policy compliance officers. It eliminates the manual effort of aggregating multi-source energy data,

HTTP Request, Agent, OpenAI Chat +9