This workflow corresponds to n8n.io template #12085 — we link there as the canonical source.
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 →
{
"name": "Monitor backlink profile with SE Ranking",
"tags": [],
"nodes": [
{
"id": "b406b7f4-bcc6-453f-95c8-61193d914ac0",
"name": "Manual Trigger",
"type": "n8n-nodes-base.manualTrigger",
"position": [
832,
496
],
"parameters": {},
"typeVersion": 1
},
{
"id": "207a9b9a-93c9-40d6-a590-8a8e5aeb4661",
"name": "Get backlinks summary",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1056,
496
],
"parameters": {
"target": "example.com",
"resource": "backlinks",
"additionalFields": {}
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "b4097159-c748-45a8-889e-13efb7de154b",
"name": "Get new backlinks",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1280,
368
],
"parameters": {
"dateTo": "={{ $now.toFormat('yyyy-MM-dd') }}",
"target": "example.com",
"dateFrom": "={{ $now.minus(30, 'days').toFormat('yyyy-MM-dd') }}",
"resource": "backlinks",
"operation": "getHistory",
"additionalFields": {
"mode": "as_root",
"limit": 100
}
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "603e703f-d903-4f22-a788-a06fb79adbd3",
"name": "Get lost backlinks",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1280,
608
],
"parameters": {
"dateTo": "={{ $now.toFormat('yyyy-MM-dd') }}",
"target": "example.com",
"dateFrom": "={{ $now.minus(30, 'days').toFormat('yyyy-MM-dd') }}",
"resource": "backlinks",
"operation": "getHistory",
"additionalFields": {
"mode": "as_root",
"limit": 100
}
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "409f06db-2305-4b69-a3c3-43fd1c6884f8",
"name": "Get referring domains",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1504,
368
],
"parameters": {
"target": "example.com",
"resource": "backlinks",
"operation": "getRefDomains",
"additionalFields": {
"mode": "as_root",
"limit": 100
}
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "9d54bb74-0079-4046-b286-f0dfb821a218",
"name": "Get anchor texts",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1504,
608
],
"parameters": {
"target": "example.com",
"resource": "backlinks",
"operation": "getAnchors",
"additionalFields": {
"mode": "as_root",
"limit": 50
}
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "31899811-6050-4d43-913e-b73dbeca2e8c",
"name": "Get authority metrics",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1712,
368
],
"parameters": {
"target": "example.com",
"resource": "backlinks",
"operation": "getAuthority"
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "16c25f0d-c6be-4d25-b06a-f7a32cad3d09",
"name": "Get daily backlinks count",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1712,
608
],
"parameters": {
"dateTo": "={{ $now.toFormat('yyyy-MM-dd') }}",
"target": "example.com",
"dateFrom": "={{ $now.minus(30, 'days').toFormat('yyyy-MM-dd') }}",
"resource": "backlinks",
"operation": "getHistoryCount",
"additionalFields": {
"mode": "as_root"
}
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "c87ec3ed-8160-44e7-89e9-aa9b922332c7",
"name": "Get cumulative history",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1936,
368
],
"parameters": {
"dateTo": "={{ $now.toFormat('yyyy-MM-dd') }}",
"target": "example.com",
"dateFrom": "={{ $now.minus(60, 'days').toFormat('yyyy-MM-dd') }}",
"resource": "backlinks",
"operation": "getCumulativeHistory",
"additionalFields": {
"mode": "as_root"
}
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "514cf75b-947d-46dc-8480-7761ba46b589",
"name": "Get pages with backlinks",
"type": "@seranking/n8n-nodes-seranking.seRanking",
"position": [
1936,
608
],
"parameters": {
"target": "example.com",
"resource": "backlinks",
"operation": "getPages",
"additionalFields": {
"mode": "as_root",
"limit": 100
}
},
"credentials": {
"seRankingApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "9cdef420-10ab-45bc-835d-7ccfad5284f1",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
2160,
496
],
"parameters": {
"mode": "combine",
"options": {}
},
"typeVersion": 3
},
{
"id": "b87a2c29-1008-4a14-ae23-429ea971c2f7",
"name": "Format for Sheet",
"type": "n8n-nodes-base.code",
"position": [
2384,
496
],
"parameters": {
"jsCode": "const output = [];\n\nfunction addHeader(title) {\n output.push({ json: { A: '=== ' + title + ' ===' } });\n}\n\nfunction addSpace() {\n for (let i = 0; i < 5; i++) {\n output.push({ json: { A: '' } });\n }\n}\n\n// 1. SUMMARY\naddHeader('SUMMARY');\nconst summaryData = $('Get backlinks summary').first().json.summary || [];\nif (summaryData.length > 0) {\n output.push({ json: { A: 'target', B: 'backlinks', C: 'refdomains', D: 'dofollow', E: 'nofollow', F: 'inlink_rank', G: 'domain_inlink_rank' } });\n for (const item of summaryData) {\n output.push({\n json: {\n A: item.target || '',\n B: item.backlinks || 0,\n C: item.refdomains || 0,\n D: item.dofollow_backlinks || 0,\n E: item.nofollow_backlinks || 0,\n F: item.inlink_rank || 0,\n G: item.domain_inlink_rank || 0\n }\n });\n }\n}\n\naddSpace();\n\n// 2. AUTHORITY\naddHeader('AUTHORITY');\nconst authorityData = $('Get authority metrics').first().json.pages || [];\nif (authorityData.length > 0) {\n output.push({ json: { A: 'url', B: 'inlink_rank', C: 'domain_inlink_rank' } });\n for (const item of authorityData) {\n output.push({\n json: {\n A: item.url || '',\n B: item.inlink_rank || 0,\n C: item.domain_inlink_rank || 0\n }\n });\n }\n}\n\naddSpace();\n\n// 3. NEW BACKLINKS\naddHeader('NEW BACKLINKS');\nconst newData = $('Get new backlinks').first().json.new_lost_backlinks || [];\nif (newData.length > 0) {\n output.push({ json: { A: 'date', B: 'url_from', C: 'url_to', D: 'anchor', E: 'nofollow', F: 'domain_inlink_rank' } });\n for (const item of newData) {\n output.push({\n json: {\n A: item.new_lost_date || '',\n B: item.url_from || '',\n C: item.url_to || '',\n D: item.anchor || '',\n E: item.nofollow ? 'Yes' : 'No',\n F: item.domain_inlink_rank || 0\n }\n });\n }\n}\n\naddSpace();\n\n// 4. LOST BACKLINKS\naddHeader('LOST BACKLINKS');\nconst lostData = $('Get lost backlinks').first().json.new_lost_backlinks || [];\nif (lostData.length > 0) {\n output.push({ json: { A: 'date', B: 'url_from', C: 'url_to', D: 'anchor', E: 'reason_lost' } });\n for (const item of lostData) {\n output.push({\n json: {\n A: item.new_lost_date || '',\n B: item.url_from || '',\n C: item.url_to || '',\n D: item.anchor || '',\n E: item.reason_lost || ''\n }\n });\n }\n}\n\naddSpace();\n\n// 5. REFERRING DOMAINS\naddHeader('REFERRING DOMAINS');\nconst refData = $('Get referring domains').first().json.refdomains || [];\nif (refData.length > 0) {\n output.push({ json: { A: 'refdomain', B: 'backlinks', C: 'dofollow', D: 'domain_inlink_rank', E: 'first_seen' } });\n for (const item of refData) {\n output.push({\n json: {\n A: item.refdomain || '',\n B: item.backlinks || 0,\n C: item.dofollow_backlinks || 0,\n D: item.domain_inlink_rank || 0,\n E: item.first_seen || ''\n }\n });\n }\n}\n\naddSpace();\n\n// 6. ANCHOR TEXTS\naddHeader('ANCHOR TEXTS');\nconst anchorData = $('Get anchor texts').first().json.anchors || [];\nif (anchorData.length > 0) {\n output.push({ json: { A: 'anchor', B: 'backlinks', C: 'refdomains', D: 'dofollow' } });\n for (const item of anchorData) {\n output.push({\n json: {\n A: item.anchor || '[empty]',\n B: item.backlinks || 0,\n C: item.refdomains || 0,\n D: item.dofollow_backlinks || 0\n }\n });\n }\n}\n\naddSpace();\n\n// 7. DAILY HISTORY\naddHeader('DAILY HISTORY');\nconst dailyData = $('Get daily backlinks count').first().json.new_lost_backlinks_count || [];\nif (dailyData.length > 0) {\n output.push({ json: { A: 'date', B: 'new', C: 'lost', D: 'net' } });\n for (const item of dailyData) {\n output.push({\n json: {\n A: item.date || '',\n B: item.new || 0,\n C: item.lost || 0,\n D: (item.new || 0) - (item.lost || 0)\n }\n });\n }\n}\n\naddSpace();\n\n// 8. CUMULATIVE HISTORY\naddHeader('CUMULATIVE HISTORY');\nconst cumulativeData = $('Get cumulative history').first().json.backlinks_count || [];\nif (cumulativeData.length > 0) {\n output.push({ json: { A: 'date', B: 'backlinks' } });\n for (const item of cumulativeData) {\n output.push({\n json: {\n A: item.date || '',\n B: item.backlinks || 0\n }\n });\n }\n}\n\nreturn output;"
},
"typeVersion": 2
},
{
"id": "export-google-sheets",
"name": "Export to Google Sheets",
"type": "n8n-nodes-base.googleSheets",
"position": [
2592,
496
],
"parameters": {
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": ""
},
"documentId": {
"__rl": true,
"mode": "list",
"value": ""
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "ff116fe0-cb04-4327-a2b6-dbd96cebd02a",
"name": "Workflow Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
320,
-112
],
"parameters": {
"color": 5,
"width": 560,
"height": 1080,
"content": "## Monitor backlink profile with SE Ranking\n\n## Who is this for\n- SEO pros tracking client link building progress\n- Website owners watching their backlink growth\n- Digital marketers analyzing domain authority trends\n\n## What this workflow does\nCheck your backlink profile to see which sites are linking to you, track new links you've gained, spot links you've lost, and export everything to Google Sheets.\n\n## What you'll get\n- Total backlinks and referring domains snapshot\n- New backlinks you gained in the last 30 days\n- Lost backlinks from the last 30 days (with reasons why)\n- Your top referring domains ranked by authority\n- Anchor text analysis showing how sites link to you\n- Domain authority scores and trust metrics\n- Daily trends showing link gains and losses\n- Historical growth data over the last 60 days\n\n## How it works\n1. Pulls your overall backlink profile stats\n2. Checks for new backlinks from the last month\n3. Identifies which backlinks you lost recently\n4. Lists your top referring domains by authority\n5. Analyzes the anchor text people use to link to you\n6. Gets your domain authority and trust scores\n7. Shows daily gains and losses over 30 days\n8. Grabs historical data to see growth over 60 days\n9. Organizes everything into clear sections in a spreadsheet\n\n## Requirements\n- Self-hosted n8n instance\n- SE Ranking community node installed\n- SE Ranking API token ([Get one here](https://online.seranking.com/admin.api.dashboard.html))\n- Google Sheets account (optional)\n\n## Setup\n1. Install the [SE Ranking community node](https://www.npmjs.com/package/@seranking/n8n-nodes-seranking)\n2. Add your SE Ranking API credentials\n3. Replace `example.com` with your domain in all SE Ranking nodes\n4. Connect Google Sheets if you want to export data (optional)\n\n## Customization\n- Change the time periods (currently 30 or 60 days) by editing `dateFrom` and `dateTo`\n- Get more or fewer results by adjusting the `limit` settings\n- Sort by different metrics by changing `order_by` (like first_seen or backlinks)\n- Add a Schedule Trigger to run this automatically every week"
},
"typeVersion": 1
},
{
"id": "sticky-data-collection",
"name": "Data Collection",
"type": "n8n-nodes-base.stickyNote",
"position": [
1020,
280
],
"parameters": {
"width": 1000,
"height": 140,
"content": "### \ud83d\udcca Data Collection\nGrabs backlink data from SE Ranking: summary stats, new/lost links, referring domains, anchor texts, authority metrics, and historical trends."
},
"typeVersion": 1
},
{
"id": "sticky-formatting",
"name": "Formatting & Export",
"type": "n8n-nodes-base.stickyNote",
"position": [
2140,
380
],
"parameters": {
"width": 500,
"height": 140,
"content": "### \ud83d\udce4 Formatting & Export\nCombines all the data, organizes it into clear sections with headers, and saves to Google Sheets."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"connections": {
"Merge": {
"main": [
[
{
"node": "Format for Sheet",
"type": "main",
"index": 0
}
]
]
},
"Manual Trigger": {
"main": [
[
{
"node": "Get backlinks summary",
"type": "main",
"index": 0
}
]
]
},
"Format for Sheet": {
"main": [
[
{
"node": "Export to Google Sheets",
"type": "main",
"index": 0
}
]
]
},
"Get anchor texts": {
"main": [
[
{
"node": "Get daily backlinks count",
"type": "main",
"index": 0
}
]
]
},
"Get new backlinks": {
"main": [
[
{
"node": "Get referring domains",
"type": "main",
"index": 0
}
]
]
},
"Get lost backlinks": {
"main": [
[
{
"node": "Get anchor texts",
"type": "main",
"index": 0
}
]
]
},
"Get authority metrics": {
"main": [
[
{
"node": "Get cumulative history",
"type": "main",
"index": 0
}
]
]
},
"Get backlinks summary": {
"main": [
[
{
"node": "Get new backlinks",
"type": "main",
"index": 0
},
{
"node": "Get lost backlinks",
"type": "main",
"index": 0
}
]
]
},
"Get referring domains": {
"main": [
[
{
"node": "Get authority metrics",
"type": "main",
"index": 0
}
]
]
},
"Get cumulative history": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Get pages with backlinks": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Get daily backlinks count": {
"main": [
[
{
"node": "Get pages with backlinks",
"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.
googleSheetsOAuth2ApiseRankingApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
SEO pros tracking client link building progress Website owners watching their backlink growth Digital marketers analyzing domain authority trends
Source: https://n8n.io/workflows/12085/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Marketing teams tracking AI SEO performance Content strategists planning editorial calendars SEO teams doing competitive intelligence
SEO teams comparing AI search visibility against competitors Content strategists planning editorial calendars around AI search gaps Marketing managers reporting share of voice across ChatGPT, Perplexi
Content creators looking for topic ideas SEO specialists doing keyword research Marketing teams planning content calendars
SEO agencies tracking client site health over time Web developers monitoring technical SEO improvements Website owners measuring audit progress week over week
This template is ideal for solo store owners, eCommerce marketers, automation beginners, or anyone using Shopify and Gmail who wants to recover lost revenue without coding.