Streamline your process of searching for LinkedIn companies by automating data collection and integration into your Google Sheets CRM using the Airtable API. This workflow allows you to batch process company searches, scoring them with AI for optimal selection, and seamlessly add them to your CRM for immediate action. Key features include batch processing for efficiency, real-time data integration, and automated scoring based on predefined criteria. Perfect for data management teams seeking to enhance lead generation and CRM data accuracy. Requires 1 account: Airtable API. Save up to 10 hours weekly by automating company evaluations and ensuring your CRM is always up-to-date with relevant leads.
Categories
APIs
Credentials
Copy or download to import into your n8n instance
{ "id": "AuB5sN9ZQomeyH2T", "meta": { "instanceId": "95a1299fb2b16eb2219cb044f54e72c2d00dcd2c72efe717b3c308d200f29927" }, "name": "Search LinkedIn companies, Score with AI and add them to Google Sheet CRM", "tags": [], "nodes": [ { "id": "a8d454a5-ad6a-4f8a-8f40-63c0324ab503", "name": "When clicking โTest workflowโ", "type": "n8n-nodes-base.manualTrigger", "position": [ -220, 760 ], "parameters": {}, "typeVersion": 1 }, { "id": "d8c42ec9-6df3-41b5-abbf-792cf6ddfcdc", "name": "Process Each Company", "type": "n8n-nodes-base.splitInBatches", "onError": "continueRegularOutput", "position": [ 720, 760 ], "parameters": { "options": {} }, "typeVersion": 3, "alwaysOutputData": false }, { "id": "64203780-d1c7-44d1-b1c6-cf3068e407e6", "name": "Get Company Info", "type": "n8n-nodes-base.httpRequest", "onError": "continueRegularOutput", "position": [ 960, 760 ], "parameters": { "url": "https://api.ghostgenius.fr/v2/company", "options": { "batching": { "batch": { "batchSize": 1, "batchInterval": 2000 } } }, "sendQuery": true, "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "queryParameters": { "parameters": [ { "name": "url", "value": "={{ $json.url }}" } ] } }, "credentials": { "httpHeaderAuth": { "id": "bLl270qRTYghd4Za", "name": "Resend" } }, "retryOnFail": true, "typeVersion": 4.2 }, { "id": "d0fdf8ec-65e3-4c70-8e1b-aff54ac21587", "name": "Filter Valid Companies", "type": "n8n-nodes-base.if", "onError": "continueRegularOutput", "position": [ 1180, 760 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "5ea943a6-8f6c-4cb0-b194-8c92d4b2aacc", "operator": { "type": "string", "operation": "notEmpty", "singleValue": true }, "leftValue": "={{ $json.website }}", "rightValue": "[null]" }, { "id": "8235b9bb-3cd4-4ed4-a5dc-921127ff47c7", "operator": { "type": "number", "operation": "gt" }, "leftValue": "={{ $json.followers_count }}", "rightValue": 200 } ] } }, "typeVersion": 2.2 }, { "id": "df8c55e8-23cd-4eac-b85c-66fc4ef9ef8d", "name": "Check If Company Exists", "type": "n8n-nodes-base.airtable", "position": [ 1580, 760 ], "parameters": { "base": { "__rl": true, "mode": "list", "value": "appjYSpxvs8mlJaIW", "cachedResultUrl": "https://airtable.com/appjYSpxvs8mlJaIW", "cachedResultName": "CRM" }, "table": { "__rl": true, "mode": "list", "value": "tbliG5xhydGGgk3nD", "cachedResultUrl": "https://airtable.com/appjYSpxvs8mlJaIW/tbliG5xhydGGgk3nD", "cachedResultName": "CRM" }, "options": {}, "operation": "search", "filterByFormula": "={id} = '{{ $json.id.toNumber() }}'" }, "credentials": { "airtableTokenApi": { "id": "xEgnWLP3bQAkHxtH", "name": "Airtable Personal Access Token account 3" } }, "typeVersion": 2.1, "alwaysOutputData": true }, { "id": "8fad928f-5b7e-48f0-9213-904569ac6689", "name": "Is New Company?", "type": "n8n-nodes-base.if", "position": [ 1820, 760 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "strict" }, "combinator": "and", "conditions": [ { "id": "050c33be-c648-44d7-901c-51f6ff024e97", "operator": { "type": "object", "operation": "empty", "singleValue": true }, "leftValue": "={{ $('Check If Company Exists').all().first().json }}", "rightValue": "" } ] } }, "typeVersion": 2.2 }, { "id": "fa04a252-b0ef-4672-b523-543f4807ffd6", "name": "Add Company to CRM", "type": "n8n-nodes-base.airtable", "position": [ 2080, 760 ], "parameters": { "base": { "__rl": true, "mode": "list", "value": "appjYSpxvs8mlJaIW", "cachedResultUrl": "https://airtable.com/appjYSpxvs8mlJaIW", "cachedResultName": "CRM" }, "table": { "__rl": true, "mode": "list", "value": "tbliG5xhydGGgk3nD", "cachedResultUrl": "https://airtable.com/appjYSpxvs8mlJaIW/tbliG5xhydGGgk3nD", "cachedResultName": "CRM" }, "columns": { "value": { "id": "={{ $('Filter Valid Companies').item.json.id.toNumber() }}", "Name": "={{ $('Filter Valid Companies').item.json.name }}", "Country": "๐บ๐ธ United States", "Summary": "={{ $('Filter Valid Companies').item.json.description }}", "Tagline": "={{ $('Filter Valid Companies').item.json.tagline }}", "Website": "={{ $('Filter Valid Companies').item.json.website }}", "Category": "Growth Marketing Agency 11-50 ๐", "LinkedIn": "={{ $('Filter Valid Companies').item.json.url }}" }, "schema": [ { "id": "Name", "type": "string", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "Name", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Website", "type": "string", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "Website", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "LinkedIn", "type": "string", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "LinkedIn", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Category", "type": "options", "display": true, "options": [ { "name": "Growth Marketing Agency 11-50 ๐", "value": "Growth Marketing Agency 11-50 ๐" } ], "removed": false, "readOnly": false, "required": false, "displayName": "Category", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "id", "type": "number", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "id", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Tagline", "type": "string", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "Tagline", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Summary", "type": "string", "display": true, "removed": false, "readOnly": false, "required": false, "displayName": "Summary", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Index", "type": "string", "display": true, "removed": true, "readOnly": true, "required": false, "displayName": "Index", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "Country", "type": "options", "display": true, "options": [ { "name": "๐จ๐ฑ Chili", "value": "๐จ๐ฑ Chili" }, { "name": "๐ฐ๐ฟ Kazakhstan", "value": "๐ฐ๐ฟ Kazakhstan" }, { "name": "๐ธ๐ช Suรจde", "value": "๐ธ๐ช Suรจde" }, { "name": "๐ณ๐ด Norvรจge", "value": "๐ณ๐ด Norvรจge" }, { "name": "๐ต๐ช Pรฉrou", "value": "๐ต๐ช Pรฉrou" }, { "name": "๐น๐ผ Taรฏwan", "value": "๐น๐ผ Taรฏwan" }, { "name": "๐ฆ๐น Autriche", "value": "๐ฆ๐น Autriche" }, { "name": "๐ฉ๐ฐ Danemark", "value": "๐ฉ๐ฐ Danemark" }, { "name": "๐ท๐บ Russie", "value": "๐ท๐บ Russie" }, { "name": "๐ฐ๐ท Corรฉe du Sud", "value": "๐ฐ๐ท Corรฉe du Sud" }, { "name": "๐ช๐ช Estonie", "value": "๐ช๐ช Estonie" }, { "name": "๐ท๐ด Roumanie", "value": "๐ท๐ด Roumanie" }, { "name": "๐จ๐ด Colombie", "value": "๐จ๐ด Colombie" }, { "name": "๐ฎ๐ท Iran", "value": "๐ฎ๐ท Iran" }, { "name": "๐ฆ๐ท Argentine", "value": "๐ฆ๐ท Argentine" }, { "name": "๐ง๐ช Belgique", "value": "๐ง๐ช Belgique" }, { "name": "๐ฌ๐ท Grรจce", "value": "๐ฌ๐ท Grรจce" }, { "name": "๐ฒ๐ฆ Maroc", "value": "๐ฒ๐ฆ Maroc" }, { "name": "๐ต๐ฑ Pologne", "value": "๐ต๐ฑ Pologne" }, { "name": "๐ต๐น Portugal", "value": "๐ต๐น Portugal" }, { "name": "๐ง๐ท Brรฉsil", "value": "๐ง๐ท Brรฉsil" }, { "name": "๐ฐ๐ช Kenya", "value": "๐ฐ๐ช Kenya" }, { "name": "๐ฎ๐น Italie", "value": "๐ฎ๐น Italie" }, { "name": "๐ฎ๐ฑ Israรซl", "value": "๐ฎ๐ฑ Israรซl" }, { "name": "๐ฒ๐ฝ Mexique", "value": "๐ฒ๐ฝ Mexique" }, { "name": "๐บ๐ฆ Ukraine", "value": "๐บ๐ฆ Ukraine" }, { "name": "๐ซ๐ท France", "value": "๐ซ๐ท France" }, { "name": "๐น๐ท Turquie", "value": "๐น๐ท Turquie" }, { "name": "๐ฒ๐พ Malaisie", "value": "๐ฒ๐พ Malaisie" }, { "name": "๐ต๐ญ Philippines", "value": "๐ต๐ญ Philippines" }, { "name": "๐ฟ๐ฆ Afrique du Sud", "value": "๐ฟ๐ฆ Afrique du Sud" }, { "name": "๐ฉ๐ช Allemagne", "value": "๐ฉ๐ช Allemagne" }, { "name": "๐ณ๐ฑ Pays-Bas", "value": "๐ณ๐ฑ Pays-Bas" }, { "name": "๐ช๐ธ Espagne", "value": "๐ช๐ธ Espagne" }, { "name": "๐ธ๐ฌ Singapour", "value": "๐ธ๐ฌ Singapour" }, { "name": "๐ฆ๐บ Australie", "value": "๐ฆ๐บ Australie" }, { "name": "๐จ๐ฆ Canada", "value": "๐จ๐ฆ Canada" }, { "name": "๐ฆ๐ช รmirats arabes unis", "value": "๐ฆ๐ช รmirats arabes unis" }, { "name": "๐ต๐ฐ Pakistan", "value": "๐ต๐ฐ Pakistan" }, { "name": "๐ฌ๐ง Royaume-Uni", "value": "๐ฌ๐ง Royaume-Uni" }, { "name": "๐ฎ๐ณ Inde", "value": "๐ฎ๐ณ Inde" }, { "name": "๐บ๐ธ United States", "value": "๐บ๐ธ United States" } ], "removed": false, "readOnly": false, "required": false, "displayName": "Country", "defaultMatch": false, "canBeUsedToMatch": true }, { "id": "State", "type": "options", "display": true, "options": [ { "name": "Not yet added", "value": "Not yet added" }, { "name": "Added to the campaign", "value": "Added to the campaign" }, { "name": "No mail found", "value": "No mail found" }, { "name": "No employee found", "value": "No employee found" }, { "name": "To do later", "value": "To do later" }, { "name": "Meeting booked", "value": "Meeting booked" } ], "removed": true, "readOnly": false, "required": false, "displayName": "State", "defaultMatch": false, "canBeUsedToMatch": true } ], "mappingMode": "defineBelow", "matchingColumns": [], "attemptToConvertTypes": false, "convertFieldsToString": false }, "options": {}, "operation": "create" }, "credentials": { "airtableTokenApi": { "id": "xEgnWLP3bQAkHxtH", "name": "Airtable Personal Access Token account 3" } }, "typeVersion": 2.1 }, { "id": "6c92f1fa-f79c-4736-b91c-80404822f8e3", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ -260, 400 ], "parameters": { "color": 6, "width": 800, "height": 560, "content": "## LinkedIn Company Search\nThis section initiates the workflow and searches for your target companies on LinkedIn using the Ghost Genius API. \n\nYou can filter and refine your search using keywords, company size, location, industry, or even whether the company has active job postings. Use the \"Set Variables\" node for it.\n\nNote that you can retrieve a maximum of 1000 companies per search (corresponding to 100 LinkedIn pages), so it's important not to exceed this number of results to avoid losing prospects.\n\n**Example:** Let's say I want to target Growth Marketing Agencies with 11-50 employees. I do my search and see that there are 10,000 results. So I refine my search by using location to go country by country and retrieve all 10,000 results in several batches ranging from 500 to 1000 depending on the country.\n\n**Tips:** To test the workflow or to see the number of results of your search, change the pagination parameter (Max Pages) in the \"Search Companies\" node. It will be displayed at the very top of the response JSON." }, "typeVersion": 1 }, { "id": "f573ed2a-64bc-4b9e-89c3-bc160d1a9088", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [ 620, 400 ], "parameters": { "color": 4, "width": 780, "height": 560, "content": "## Company Data Processing \nThis section processes each company individually.\n\nWe retrieve all the company information using Get Company Details by using the LinkedIn link obtained from the previous section.\n\nThen we filter the company based on the number of followers, which gives us a first indication of the company's credibility (200 in this case), and whether their LinkedIn page has a website listed.\n\nThe workflow implements batch processing with a 2-second delay between requests to respect API rate limits. This methodical approach ensures reliable data collection while preventing API timeouts.\n\nYou can adjust these thresholds based on your target market - increasing the follower count for more established businesses or decreasing it for emerging markets." }, "typeVersion": 1 }, { "id": "dbea81f2-2f92-4c09-9780-57da8a19958d", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 1480, 400 ], "parameters": { "color": 5, "width": 780, "height": 560, "content": "## CRM Integration\nThis section handles the Airtable CRM integration.\n\nIt first checks if the company already exists in your database (using LinkedIn ID) to prevent duplicates because when you do close enough searches, some companies may come up several times.\n\nIf it's a new company, it adds the record to Airtable with comprehensive details including name, LinkedIn URL, website, tagline, description, and category. \n\nThe workflow automatically tags companies as 'Growth Marketing Agency 11-50 ๐' and sets the country to '๐บ๐ธ United States' (customize according to your use case)." }, "typeVersion": 1 }, { "id": "3a00f315-1f67-4218-9131-6b3074d8074f", "name": "Sticky Note3", "type": "n8n-nodes-base.stickyNote", "position": [ 0, 0 ], "parameters": { "width": 600, "height": 340, "content": "## Introduction\nWelcome to my template! Before explaining how to set it up, here's some important information:\n\nThis automation is very easy to implement and is designed for anyone wanting to build and enrich a solid CRM through LinkedIn research.\n\nThe initial data source can be changed as long as you have the LinkedIn URL of the company.\n\nFor any questions, you can send me a DM on my [LinkedIn](https://www.linkedin.com/in/matthieu-belin83/) :) " }, "typeVersion": 1 }, { "id": "299eddfa-da04-460e-955a-f4227ad6b20d", "name": "Sticky Note4", "type": "n8n-nodes-base.stickyNote", "position": [ 700, 0 ], "parameters": { "width": 600, "height": 340, "content": "## Setup\n- Create an account on [Ghost Genius API](https://ghostgenius.fr) and get your API key.\n\n- Configure the Search Companies and Get Company Info modules by creating a \"Header Auth\" credential:\n**Name: \"Authorization\"**\n**Value: \"Bearer api_key\"**\n๐ฅ Watch the setup API Key video juste [here](https://www.youtube.com/watch?v=12nLy8GWSlE).\n\n- Create an Airtable base named \"CRM\" and add at least the following columns: name (default), website (url), LinkedIn (url), id (number).\n\n- Configure your Airtable credential by following the n8n documentation.\n\n- Add your company search selection criteria to the โSet Variablesโ node." }, "typeVersion": 1 }, { "id": "e0f91993-2858-4664-9abd-db68d06f4e7b", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ 1400, 0 ], "parameters": { "width": 600, "height": 340, "content": "## Tools \n**(You can use the API and CRM of your choice; this is only a suggestion)**\n\n- API Linkedin : [Ghost Genius API](https://ghostgenius.fr) \n\n- API Documentation : [Documentation](https://ghostgenius.fr/docs)\n\n- CRM : [Airtable](https://airtable.com)\n\n- LinkedIn Location ID Finder : [Ghost Genius Locations ID Finder](https://ghostgenius.fr/tools/search-sales-navigator-locations-id)" }, "typeVersion": 1 }, { "id": "3de54c01-709a-4f21-8b45-81402891ce6b", "name": "Set Variables", "type": "n8n-nodes-base.set", "position": [ -20, 760 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "e81e4891-4786-4dd9-a338-d1095e27f382", "name": "Your target", "type": "string", "value": "Growth Marketing Agency" }, { "id": "ed2b6b08-66aa-4d4b-b68c-698b5e841930", "name": "B: 1-10 employees, C: 11-50 employees, D: 51-200 employees, E: 201-500 employees, F: 501-1000 employees, G: 1001-5000 employees, H: 5001-10,000 employees, I: 10,001+ employees", "type": "string", "value": "C" }, { "id": "f1d02f1a-8115-4e0c-a5ec-59bf5b54263b", "name": "Location (find it on : https://www.ghostgenius.fr/tools/search-sales-navigator-locations-id)", "type": "string", "value": "103644278" } ] } }, "typeVersion": 3.4 }, { "id": "622bbb9e-0e90-49b9-b6b2-0949a40922d4", "name": "Search Companies", "type": "n8n-nodes-base.httpRequest", "position": [ 180, 760 ], "parameters": { "url": "https://api.ghostgenius.fr/v2/search/companies", "options": { "pagination": { "pagination": { "parameters": { "parameters": [ { "name": "page", "value": "={{ $pageCount + 1 }}" } ] }, "requestInterval": 2000, "limitPagesFetched": true, "completeExpression": "={{ $response.body.data.isEmpty() }}", "paginationCompleteWhen": "other" } } }, "sendQuery": true, "authentication": "genericCredentialType", "genericAuthType": "httpHeaderAuth", "queryParameters": { "parameters": [ { "name": "keywords", "value": "={{ $json['Your target'] }}" }, { "name": "company_size", "value": "={{ $json['B: 1-10 employees, C: 11-50 employees, D: 51-200 employees, E: 201-500 employees, F: 501-1000 employees, G: 1001-5000 employees, H: 5001-10,000 employees, I: 10,001+ employees'] }}" }, { "name": "location", "value": "={{ $json['Location (https://www'].ghostgenius['fr/tools/search-sales-navigator-locations-id)'] }}" } ] } }, "credentials": { "httpHeaderAuth": { "id": "XdFg4wGkcxwRPUMo", "name": "Header Auth account 4" } }, "typeVersion": 4.2 }, { "id": "1568a81b-bd0e-4432-8f44-bbf934f2d835", "name": "Extract Company Data", "type": "n8n-nodes-base.splitOut", "onError": "continueRegularOutput", "position": [ 380, 760 ], "parameters": { "options": {}, "fieldToSplitOut": "data" }, "typeVersion": 1 }, { "id": "40db1c06-36f4-4d74-8fa2-0c18220a0a4f", "name": "Sticky Note6", "type": "n8n-nodes-base.stickyNote", "position": [ 820, -140 ], "parameters": { "color": 7, "width": 380, "height": 80, "content": "# [Setup API Key Video](https://www.youtube.com/watch?v=12nLy8GWSlE)\n" }, "typeVersion": 1 } ], "active": false, "pinData": {}, "settings": { "executionOrder": "v1" }, "versionId": "20e265a7-7f8d-4e0c-926f-10c8101d7311", "connections": { "Set Variables": { "main": [ [ { "node": "Search Companies", "type": "main", "index": 0 } ] ] }, "Is New Company?": { "main": [ [ { "node": "Add Company to CRM", "type": "main", "index": 0 } ], [ { "node": "Process Each Company", "type": "main", "index": 0 } ] ] }, "Get Company Info": { "main": [ [ { "node": "Filter Valid Companies", "type": "main", "index": 0 } ] ] }, "Search Companies": { "main": [ [ { "node": "Extract Company Data", "type": "main", "index": 0 } ] ] }, "Add Company to CRM": { "main": [ [ { "node": "Process Each Company", "type": "main", "index": 0 } ] ] }, "Extract Company Data": { "main": [ [ { "node": "Process Each Company", "type": "main", "index": 0 } ] ] }, "Process Each Company": { "main": [ [], [ { "node": "Get Company Info", "type": "main", "index": 0 } ] ] }, "Filter Valid Companies": { "main": [ [ { "node": "Check If Company Exists", "type": "main", "index": 0 } ], [ { "node": "Process Each Company", "type": "main", "index": 0 } ] ] }, "Check If Company Exists": { "main": [ [ { "node": "Is New Company?", "type": "main", "index": 0 } ] ] }, "When clicking โTest workflowโ": { "main": [ [ { "node": "Set Variables", "type": "main", "index": 0 } ] ] } } }
Streamline your data collection by automating email scraping from Google Maps using the Google Sheets API. This workflow efficiently extracts business emails, removes duplicates, and organizes them in real-time for easy access. Key features include batch processing to handle large datasets, HTTP requests for seamless API integration, and built-in filters to refine your data. Ideal for data managers or marketers needing accurate contact lists from local businesses. Requires 1 account: Google Sheets OAuth. Save up to 10 hours weekly by automating email collection and maintaining up-to-date contact information effortlessly.
Automate lead generation by extracting business data from Google Maps directly into Google Sheets using the Google Sheets API. This workflow eliminates manual data entry, allowing you to focus on engaging potential customers. Features include real-time data integration, automated updates from Google Maps, and seamless execution of data processing steps. Perfect for data management teams needing to compile lists of local businesses or sales teams targeting specific geographic areas. Requires 1 account: Google Sheets OAuth. Save up to 10 hours weekly by automating the collection of thousands of leads effortlessly.
Automate data management tasks using OpenAI GPT and Google Sheets API for efficient data extraction and processing. This workflow enables you to automatically extract relevant information from HTML sources and consolidate it into Google Sheets, simplifying your data organization. Key features include real-time data extraction, seamless HTML parsing, and automated entry into spreadsheets. Perfect for data analysts or teams managing large datasets that require constant updates. Requires 2 accounts: OpenAI API Key and Google Sheets OAuth. Save up to 10 hours weekly by automating data entry and retrieval, ensuring your team has accurate information at their fingertips.
Streamline data management tasks by automating data entry and processing with Google Sheets API and OpenAI's GPT. This workflow allows you to intelligently manage your data through automated inputs and real-time updates, ensuring accuracy and efficiency. Key features include seamless integration with Google Sheets for instant data syncing, AI-powered data parsing for structured outputs, and automated response generation for queries. Ideal for data analysts and project managers handling large datasets or repetitive tasks. Requires 3 accounts: OpenAI API, Serp API, Google Sheets OAuth. Experience a 70% reduction in manual data handling time and improve accuracy by 90% with automated processes.
Configure credentials and update service-specific settings before executing the workflow. Review required credentials in the Technical Details section above.