AutomationFlowsData & Sheets › Track Serp Rankings & Discover Keywords Using Dataforseo & Airtable

Track Serp Rankings & Discover Keywords Using Dataforseo & Airtable

BySparsh From Automation Jinn @sparsh-automation-jinn on n8n.io

This workflow automatically pulls SERP rankings, competitor keywords, and related keyword ideas from DataForSEO and stores structured results in Airtable — making SEO tracking and keyword research streamlined and automated.

Event trigger★★★★☆ complexity22 nodesAirtableHTTP Request
Data & Sheets Trigger: Event Nodes: 22 Complexity: ★★★★☆ Added:

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

This workflow follows the Airtable → HTTP Request 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": "aHiJa0FTt0FDBIkG",
  "name": "SEO",
  "tags": [],
  "nodes": [
    {
      "id": "86b79f13-681d-4a64-8928-4681c8cb6fba",
      "name": "When clicking \u2018Execute workflow\u2019",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -16,
        -64
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "ff60e98a-ae56-4125-bced-4aa93e6859e4",
      "name": "Wait",
      "type": "n8n-nodes-base.wait",
      "position": [
        704,
        -64
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "47398a48-af8d-4839-8020-5496cf2112fe",
      "name": "Split Out",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1104,
        -64
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "tasks[0].result[0].items"
      },
      "typeVersion": 1
    },
    {
      "id": "2f457d1b-9039-4760-acd5-8bc95718bf04",
      "name": "Split Out1",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        1136,
        256
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "tasks[0].result"
      },
      "typeVersion": 1
    },
    {
      "id": "ee6d9f98-0441-4c8c-a372-27a299c56eba",
      "name": "Wait1",
      "type": "n8n-nodes-base.wait",
      "position": [
        688,
        256
      ],
      "parameters": {
        "unit": "minutes",
        "amount": 1
      },
      "typeVersion": 1.1
    },
    {
      "id": "103c6bf3-a389-4ac3-b612-331b6e0a8c6f",
      "name": "Aggregate",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        464,
        544
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "Keyword"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "b0408f7d-6869-4259-9d8e-063e02f547e1",
      "name": "Split Out2",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        880,
        544
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "tasks[0].result"
      },
      "typeVersion": 1
    },
    {
      "id": "7396511e-f23c-45b7-942a-8b3873934632",
      "name": "Search Keywords",
      "type": "n8n-nodes-base.airtable",
      "position": [
        224,
        -64
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appATppKMQDpZLyj7",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7",
          "cachedResultName": "SEO"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbl9oPLA8Ul8AeU3i",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7/tbl9oPLA8Ul8AeU3i",
          "cachedResultName": "SERP Keywords"
        },
        "options": {},
        "operation": "search",
        "filterByFormula": "{Keyword} != \"BLANK\""
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "2300ae69-4f1f-4693-af07-3e2851a63bab",
      "name": "Search Competitors",
      "type": "n8n-nodes-base.airtable",
      "position": [
        224,
        256
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appATppKMQDpZLyj7",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7",
          "cachedResultName": "SEO"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblh2877pYvZuyIiL",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7/tblh2877pYvZuyIiL",
          "cachedResultName": "Competitor Research"
        },
        "options": {},
        "operation": "search",
        "filterByFormula": "={Research} = \"Yes\""
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "65b9ad9b-7d6d-4bfe-993d-b92479bca890",
      "name": "Search Keywords1",
      "type": "n8n-nodes-base.airtable",
      "position": [
        256,
        544
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appATppKMQDpZLyj7",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7",
          "cachedResultName": "SEO"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbl9oPLA8Ul8AeU3i",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7/tbl9oPLA8Ul8AeU3i",
          "cachedResultName": "SERP Keywords"
        },
        "options": {},
        "operation": "search",
        "filterByFormula": "{Keyword} != \"BLANK\""
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "5a1ded5f-9107-4ed2-bc7f-a5e2d18b4695",
      "name": "Post Search Rankings",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        464,
        -64
      ],
      "parameters": {
        "url": "https://api.dataforseo.com/v3/serp/google/organic/task_post",
        "method": "POST",
        "options": {},
        "jsonBody": "=[\n    {\n       \"language_code\": \"en\",\n        \"location_code\": 2840,\n        \"keyword\": {{ $json.Keyword }},\n        \"depth\": 10\n    }\n]",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "content-type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "8d97b6af-8ad1-4ca2-a9e6-e1e76be7bdea",
      "name": "Get Search Rankings",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        896,
        -64
      ],
      "parameters": {
        "url": "=https://api.dataforseo.com/v3/serp/google/organic/task_get/regular/{{ $('Post Search Rankings').item.json.tasks[0].id }}",
        "options": {},
        "jsonBody": "=\" \"",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "content-type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "d17f5494-8b82-429a-9a52-169050a60293",
      "name": "Post Competitor Keywords",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        480,
        256
      ],
      "parameters": {
        "url": "https://api.dataforseo.com/v3/keywords_data/google_ads/keywords_for_site/task_post",
        "method": "POST",
        "options": {},
        "jsonBody": "=[\n    {\n        \"location_code\": 2840,\n        \"target\": \"{{ $json.Name }}\"\n    }\n]",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "content-type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "d7962bd6-8920-4652-a29f-c76b52b076a3",
      "name": "Get Competitor Keywords",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        912,
        256
      ],
      "parameters": {
        "url": "=https://api.dataforseo.com/v3/keywords_data/google_ads/keywords_for_site/task_get/{{ $('Post Competitor Keywords').item.json.tasks[0].id }}",
        "options": {},
        "jsonBody": "=\" \"",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "content-type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "b58bd892-0bb1-4b25-baf8-07cdfa5d8506",
      "name": "Get Similar Keywords",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        656,
        544
      ],
      "parameters": {
        "url": "https://api.dataforseo.com/v3/keywords_data/google_ads/keywords_for_keywords/live",
        "method": "POST",
        "options": {},
        "jsonBody": "=[\n  {\n    \"keywords\": {{ $json.Keyword }},\n    \"language_code\": \"en\",\n    \"location_code\": 2840\n  }\n] ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpBasicAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Content-Type",
              "value": "application/json"
            }
          ]
        }
      },
      "credentials": {
        "httpBasicAuth": {
          "name": "<your credential>"
        },
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.3
    },
    {
      "id": "1980f706-c89b-450d-bbfa-ea8a276dc694",
      "name": "Create Competitor Keywords Records",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1392,
        256
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appATppKMQDpZLyj7",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7",
          "cachedResultName": "SEO"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblewLBcS8d673dcE",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7/tblewLBcS8d673dcE",
          "cachedResultName": "Competitor Keywords Research"
        },
        "columns": {
          "value": {
            "CPC": "={{ $json.cpc }}",
            "Keyword": "={{ $json.keyword }}",
            "Apr_2025": "={{ $json.monthly_searches[6].search_volume }}",
            "Aug_2025": "={{ $json.monthly_searches[2].search_volume }}",
            "Dec_2025": "={{ $json.monthly_searches[10].search_volume }}",
            "Feb_2025": "={{ $json.monthly_searches[8].search_volume }}",
            "Jan_2025": "={{ $json.monthly_searches[9].search_volume }}",
            "Jul_2025": "={{ $json.monthly_searches[3].search_volume }}",
            "Jun_2025": "={{ $json.monthly_searches[4].search_volume }}",
            "Mar_2025": "={{ $json.monthly_searches[7].search_volume }}",
            "May_2025": "={{ $json.monthly_searches[5].search_volume }}",
            "Nov_2025": "={{ $json.monthly_searches[11].search_volume }}",
            "Oct_2025": "={{ $json.monthly_searches[0].search_volume }}",
            "Sep_2025": "={{ $json.monthly_searches[1].search_volume }}",
            "Competition": "={{ $json.competition }}",
            "Company Name": "=[\"{{ $('Search Competitors').item.json.id }}\"]",
            "Search_Volume": "={{ $json.search_volume }}",
            "Competition_Index": "={{ $json.competition_index }}",
            "Low_Top_Of_Page_Bid": "={{ $json.low_top_of_page_bid }}",
            "High_Top_Of_Page_Bid": "={{ $json.high_top_of_page_bid }}"
          },
          "schema": [
            {
              "id": "Keyword",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Keyword",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company Name",
              "type": "array",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Company Name",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Competition",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "LOW",
                  "value": "LOW"
                },
                {
                  "name": "MEDIUM",
                  "value": "MEDIUM"
                },
                {
                  "name": "HIGH",
                  "value": "HIGH"
                }
              ],
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Competition",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Competition_Index",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Competition_Index",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Search_Volume",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Search_Volume",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Low_Top_Of_Page_Bid",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Low_Top_Of_Page_Bid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "High_Top_Of_Page_Bid",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "High_Top_Of_Page_Bid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "CPC",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "CPC",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Average Search Volume",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": true,
              "required": false,
              "displayName": "Average Search Volume",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Jan_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Jan_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feb_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Feb_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Mar_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Mar_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Apr_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Apr_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "May_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "May_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Jun_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Jun_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Jul_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Jul_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Aug_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Aug_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Sep_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Sep_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Oct_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Oct_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Nov_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Nov_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Dec_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Dec_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "cc9edec1-0333-4547-9423-fb8698950402",
      "name": "Create Search Rankings Records",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1312,
        -64
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appATppKMQDpZLyj7",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7",
          "cachedResultName": "SEO"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblpJw96Iy4GTYAAC",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7/tblpJw96Iy4GTYAAC",
          "cachedResultName": "SERP rankings"
        },
        "columns": {
          "value": {
            "url": "={{ $json.url }}",
            "page": "={{ $json.page }}",
            "type": "={{ $json.type }}",
            "title": "={{ $json.title }}",
            "domain": "={{ $json.domain }}",
            "breadcrumb": "={{ $json.breadcrumb }}",
            "rank_group": "={{ $json.rank_group }}",
            "description": "={{ $json.description }}",
            "SERP Keywords": "=[\"{{ $('Search Keywords').item.json.id }}\"]",
            "rank_absolute": "={{ $json.rank_absolute }}"
          },
          "schema": [
            {
              "id": "type",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "SERP Keywords",
              "type": "array",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "SERP Keywords",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "rank_group",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "rank_group",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "rank_absolute",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "rank_absolute",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "page",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "page",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "domain",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "domain",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "description",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "description",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "url",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "url",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "breadcrumb",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "breadcrumb",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "55029a35-7810-49c2-a57b-3ddd5ec7e339",
      "name": "Create Similar Keywords Records",
      "type": "n8n-nodes-base.airtable",
      "position": [
        1072,
        544
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "appATppKMQDpZLyj7",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7",
          "cachedResultName": "SEO"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tblmh2gHzTdv24T4r",
          "cachedResultUrl": "https://airtable.com/appATppKMQDpZLyj7/tblmh2gHzTdv24T4r",
          "cachedResultName": "Table 1"
        },
        "columns": {
          "value": {
            "CPC": "={{ $json.cpc }}",
            "Keyword": "={{ $json.keyword }}",
            "Apr_2025": "={{ $json.monthly_searches[6].search_volume }}",
            "Aug_2025": "={{ $json.monthly_searches[2].search_volume }}",
            "Dec_2025": "={{ $json.monthly_searches[10].search_volume }}",
            "Feb_2025": "={{ $json.monthly_searches[8].search_volume }}",
            "Jan_2025": "={{ $json.monthly_searches[9].search_volume }}",
            "Jul_2025": "={{ $json.monthly_searches[3].search_volume }}",
            "Jun_2025": "={{ $json.monthly_searches[4].search_volume }}",
            "Mar_2025": "={{ $json.monthly_searches[7].search_volume }}",
            "May_2025": "={{ $json.monthly_searches[5].search_volume }}",
            "Nov_2025": "={{ $json.monthly_searches[11].search_volume }}",
            "Oct_2025": "={{ $json.monthly_searches[0].search_volume }}",
            "Sep_2025": "={{ $json.monthly_searches[1].search_volume }}",
            "Competition": "={{ $json.competition }}",
            "Search_Volume": "={{ $json.search_volume }}",
            "Competition_Index": "={{ $json.competition_index }}",
            "Low_Top_Of_Page_Bid": "={{ $json.low_top_of_page_bid }}",
            "High_Top_Of_Page_Bid": "={{ $json.high_top_of_page_bid }}"
          },
          "schema": [
            {
              "id": "Keyword",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Keyword",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Competition",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "LOW",
                  "value": "LOW"
                },
                {
                  "name": "MEDIUM",
                  "value": "MEDIUM"
                },
                {
                  "name": "HIGH",
                  "value": "HIGH"
                }
              ],
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Competition",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Competition_Index",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Competition_Index",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Search_Volume",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Search_Volume",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Low_Top_Of_Page_Bid",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Low_Top_Of_Page_Bid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "High_Top_Of_Page_Bid",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "High_Top_Of_Page_Bid",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "CPC",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "CPC",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Jan_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Jan_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Feb_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Feb_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Mar_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Mar_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Apr_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Apr_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "May_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "May_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Jun_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Jun_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Jul_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Jul_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Aug_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Aug_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Sep_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Sep_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Oct_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Oct_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Nov_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Nov_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Dec_2025",
              "type": "number",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Dec_2025",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "create"
      },
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "f21e51ce-c609-4a0d-9b68-6b138afdd5c2",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        464
      ],
      "parameters": {
        "color": 2,
        "width": 1136,
        "height": 304,
        "content": "## Keywords Ideas Tool"
      },
      "typeVersion": 1
    },
    {
      "id": "5f2bc542-4fa0-4f6f-8ee8-d782f31af16c",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        160
      ],
      "parameters": {
        "color": 6,
        "width": 1424,
        "height": 272,
        "content": "## Track Competitor Keywords"
      },
      "typeVersion": 1
    },
    {
      "id": "ebe2017d-e467-42a7-b711-610dcee6ac34",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        192,
        -160
      ],
      "parameters": {
        "color": 4,
        "width": 1424,
        "height": 272,
        "content": "## Track Search Rankings "
      },
      "typeVersion": 1
    },
    {
      "id": "39c2ebb6-28ef-47d4-9030-59cbd13d6535",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1024,
        224
      ],
      "parameters": {
        "width": 1008,
        "height": 592,
        "content": "### \ud83d\ude80 Automated SEO Data Engine using DataForSEO & Airtable( By Sparsh from Automation Jinn automationjinn.com)\n\nThis workflow converts keywords + competitor domains \u2192 SERP rankings, competitor keyword insights, and similar keyword ideas, all stored in Airtable with zero manual research.\n\n#### \ud83d\udd01 Flow Summary\n1. **Trigger** starts the workflow on demand (or via schedule).\n2. **Seed Keywords Fetch** pulls keywords from Airtable.\n3. **SERP Tracking**\n   - Posts keyword tasks to **DataForSEO**\n   - Waits + fetches rank results\n   - Stores structured SERP rows in **`SERP rankings`** table\n4. **Competitor Research**\n   - Fetches competitor domains from Airtable\n   - Retrieves competitor-site keywords from **DataForSEO**\n   - Saves to **`Competitor Keywords Research`**\n5. **Related Keyword Ideas**\n   - Aggregates seed keywords\n   - Calls **DataForSEO** for similar/related keyword suggestions\n   - Stores data in **`Similar Keywords`** table\n\n#### \ud83c\udfaf Goal\nEnable continuous SEO tracking and keyword discovery by automatically maintaining a centralised Airtable hub for SERP movement, competitor insights, and keyword expansion without manual effort.\n"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2c8ae113-e5ab-4eb4-9ee9-9fca63f8cccf",
  "connections": {
    "Wait": {
      "main": [
        [
          {
            "node": "Get Search Rankings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Wait1": {
      "main": [
        [
          {
            "node": "Get Competitor Keywords",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Aggregate": {
      "main": [
        [
          {
            "node": "Get Similar Keywords",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Create Search Rankings Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out1": {
      "main": [
        [
          {
            "node": "Create Competitor Keywords Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out2": {
      "main": [
        [
          {
            "node": "Create Similar Keywords Records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Keywords": {
      "main": [
        [
          {
            "node": "Post Search Rankings",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Keywords1": {
      "main": [
        [
          {
            "node": "Aggregate",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search Competitors": {
      "main": [
        [
          {
            "node": "Post Competitor Keywords",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Search Rankings": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Similar Keywords": {
      "main": [
        [
          {
            "node": "Split Out2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post Search Rankings": {
      "main": [
        [
          {
            "node": "Wait",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get Competitor Keywords": {
      "main": [
        [
          {
            "node": "Split Out1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Post Competitor Keywords": {
      "main": [
        [
          {
            "node": "Wait1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "Search Keywords",
            "type": "main",
            "index": 0
          },
          {
            "node": "Search Competitors",
            "type": "main",
            "index": 0
          },
          {
            "node": "Search Keywords1",
            "type": "main",
            "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

This workflow automatically pulls SERP rankings, competitor keywords, and related keyword ideas from DataForSEO and stores structured results in Airtable — making SEO tracking and keyword research streamlined and automated.

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

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

Lmchatopenai Workflow. Uses noOp, stickyNote, executeWorkflowTrigger, airtable. Event-driven trigger; 41 nodes.

Execute Workflow Trigger, Airtable, HTTP Request
Data & Sheets

This n8n workflow retrieves an Airtable record along with its related child records in a hierarchical structure. It can fetch up to 3 levels of linked records and assembles them into a comprehensive J

Execute Workflow Trigger, Airtable, HTTP Request
Data & Sheets

How it works

Airtable Trigger, Sendinblue, Airtable +1
Data & Sheets

d16-Web-Scraper-Data-Flow. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 20 nodes.

HTTP Request, Airtable, Execute Workflow Trigger
Data & Sheets

N8N Workflow Backup Management With Dropbox And Airtable. Uses manualTrigger, splitInBatches, noOp, airtable. Event-driven trigger; 19 nodes.

Airtable, HTTP Request, Move Binary Data +1