Get invoices from Xero
Companion workflow for Xero node docs
Collect LinkedIn profiles with SerpAPI Google Search and Sheets
[LI] – Search Profiles > ⚠️ Self-hosted disclaimer: > This workflow uses the SerpAPI community node, which is available only on self-hosted n8n instances. > For n8n Cloud, you may need to use an HTTP Request node with the SerpAPI REST API instead. --- --- Who’s it for Recruiters, talent sourcers, SDRs, and anyone who wants to automatically gather public LinkedIn profiles from Google search results based on keywords — across multiple pages — and log them to a Google Sheet for further analysis. --- What it does / How it works This workflow extends the standard LinkedIn profile search to include pagination, allowing you to fetch results from multiple Google result pages in one go. Here’s the step-by-step process: Form Trigger – “LinkedIn Search” Collects: Keywords (comma separated) – e.g., python, fintech, warsaw Pages to fetch – number of Google pages to scrape (each page ≈ 10 results) Triggers the workflow when submitted. Format Keywords (Set) Converts the keywords into a Google-ready query string: ("python") ("fintech") ("warsaw") These parentheses improve relevance in Google searches. Build Page List (Code) Creates a list of pages to iterate through. For example, if “Pages to fetch” = 3, it generates 3 search batches with proper start offsets (0, 10, 20). Keeps track of: Grouped keywords (keywordsGrouped) Raw keywords Submission timestamp Loop Over Items (Split In Batches) Loops through the page list one batch at a time. Sends each batch to SerpAPI Search and continues until all pages are processed. SerpAPI Search Queries Google with: site:pl.linkedin.com/in/ ("keyword1") ("keyword2") ("keyword3") Fixed to the Warsaw, Masovian Voivodeship, Poland location. The start parameter controls pagination. Check how many results are returned (Switch) If no results → Triggers No profiles found. If results found → Passes data forward. Split Out Extracts each LinkedIn result from the organic_results array. Get Full Name to property of object (Code) Extracts a clean full name from the search result title (text before “–” or “|”). Append profile in sheet (Google Sheets) Saves the following fields into your connected sheet: | Column | Description | |---------|-------------| | Date | Submission timestamp | | Profile | Public LinkedIn profile URL | | Full name | Extracted candidate name | | Keywords | Original keywords from the form | Loop Over Items (continue) After writing each batch, it loops to the next Google page until all pages are complete. Form Response (final step) Sends a confirmation back to the user after all pages are processed: Check linked file --- 🧾 Google Sheets Setup Before using the workflow, prepare your Google Sheet with these columns in row 1: | Column Name | Description | |--------------|-------------| | Date | Automatically filled with the form submission time | | Profile | LinkedIn profile link | | Full name | Extracted name from search results | | Keywords | Original search input | > You can expand the sheet to include optional fields like Snippet, Job Title, or Notes if you modify the mapping in the Append profile in sheet node. --- Requirements SerpAPI account – with API key stored securely in n8n Credentials. Google Sheets OAuth2 credentials – connected to your target sheet with edit access. n8n instance (Cloud or self-hosted) > Note: SerpAPI node is part of the Community package and may require self-hosted n8n. --- How to set up Import the [LI] - Search profiles workflow into n8n. Connect your credentials: SerpAPI – use your API key. Google Sheets OAuth2 – ensure you have write permissions. Update the Google Sheets node to point to your own spreadsheet and worksheet. (Optional) Edit the location field in SerpAPI Search for different regions. Activate the workflow and open the public form (via webhook URL). Enter your keywords and specify the number of pages to fetch. --- How to customize the workflow Change search region: Modify the location in the SerpAPI node or change the domain to site:linkedin.com/in/ for global searches. Add pagination beyond 3–4 pages: Increase “Pages to fetch” — but note that excessive pages may trigger Google rate limits. Avoid duplicates: Add a Google Sheets → Read + IF node before appending new URLs. Add notifications: Add Slack, Discord, or Email nodes after Google Sheets to alert your team when new data arrives. Capture more data: Map additional fields like title, snippet, or position into your Sheet. --- Security notes Never store API keys directly in nodes — always use n8n Credentials. Keep your Google Sheet private and limit edit access. Remove identifying data before sharing your workflow publicly. --- 💡 Improvement suggestions | Area | Recommendation | Benefit | |-------|----------------|----------| | Dynamic location | Add a “Location” field to the form and feed it to SerpAPI dynamically. | Broader and location-specific searches | | Rate limiting | Add a short Wait node (e.g., 1–2s) between page fetches. | Prevents API throttling | | De-duplication | Check for existing URLs before appending. | Prevents duplicates | | Logging | Add a second sheet or log file with timestamps per run. | Easier debugging and tracking | | Data enrichment | Add a LinkedIn or People Data API enrichment step. | Collect richer candidate data | --- ✅ Summary: This workflow automates the process of searching public LinkedIn profiles from Google across multiple pages. It formats user-entered keywords into advanced Google queries, iterates through paginated SerpAPI results, extracts profile data, and stores it neatly in a Google Sheet — all through a single, user-friendly form.
Search, manage, and analyze podcasts with Listen API for AI Agents
Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator? Join the community Complete MCP server exposing 23 Listen API: Podcast Search, Directory, and Insights API operations to AI agents. ⚡ Quick Setup Import this workflow into your n8n instance Credentials Add Listen API: Podcast Search, Directory, and Insights API credentials Activate the workflow to start your MCP server Copy the webhook URL from the MCP trigger node Connect AI agents using the MCP URL 🔧 How it Works This workflow converts the Listen API: Podcast Search, Directory, and Insights API into an MCP-compatible interface for AI agents. • MCP Trigger: Serves as your server endpoint for AI agent requests • HTTP Request Nodes: Handle API calls to https://listen-api.listennotes.com/api/v2 • AI Expressions: Automatically populate parameters via $fromAI() placeholders • Native Integration: Returns responses directly to the AI agent 📋 Available Operations (23 total) 🔧 Best_Podcasts (1 endpoints) • GET /best_podcasts: Delete Podcast by ID 🔧 Curated_Podcasts (2 endpoints) • GET /curated_podcasts: Fetch Curated Podcast List by ID • GET /curated_podcasts/{id}: Fetch a curated list of podcasts by id 🔧 Episodes (3 endpoints) • POST /episodes: Fetch Episode Recommendations • GET /episodes/{id}: Fetch detailed meta data for an episode by id • GET /episodes/{id}/recommendations: Fetch recommendations for an episode 🔧 Genres (1 endpoints) • GET /genres: Fetch Podcast Genres 🔧 Just_Listen (1 endpoints) • GET /just_listen: Fetch Random Podcast Episode 🔧 Languages (1 endpoints) • GET /languages: Fetch Supported Languages 🔧 Playlists (2 endpoints) • GET /playlists: Fetch Playlist Details by ID • GET /playlists/{id}: Fetch a playlist's info and items (i.e., episodes or podcasts). 🔧 Podcasts (6 endpoints) • POST /podcasts: Fetch Podcast Audience Data • POST /podcasts/submit: Submit a podcast to Listen Notes database • DELETE /podcasts/{id}: Request to delete a podcast • GET /podcasts/{id}: Fetch detailed meta data and episodes for a podcast by id • GET /podcasts/{id}/audience: Fetch audience demographics for a podcast • GET /podcasts/{id}/recommendations: Fetch recommendations for a podcast 🔧 Regions (1 endpoints) • GET /regions: Fetch Supported Regions 🔧 Related_Searches (1 endpoints) • GET /related_searches: Fetch Related Search Terms 🔧 Search (1 endpoints) • GET /search: Full-Text Search 🔧 Spellcheck (1 endpoints) • GET /spellcheck: Spell Check Search Term 🔧 Trending_Searches (1 endpoints) • GET /trending_searches: Fetch Trending Search Terms 🔧 Typeahead (1 endpoints) • GET /typeahead: Typeahead Search 🤖 AI Integration Parameter Handling: AI agents automatically provide values for: • Path parameters and identifiers • Query parameters and filters • Request body data • Headers and authentication Response Format: Native Listen API: Podcast Search, Directory, and Insights API responses with full data structure Error Handling: Built-in n8n HTTP request error management 💡 Usage Examples Connect this MCP server to any AI agent or workflow: • Claude Desktop: Add MCP server URL to configuration • Cursor: Add MCP server SSE URL to configuration • Custom AI Apps: Use MCP URL as tool endpoint • API Integration: Direct HTTP calls to MCP endpoints ✨ Benefits • Zero Setup: No parameter mapping or configuration needed • AI-Ready: Built-in $fromAI() expressions for all parameters • Production Ready: Native n8n HTTP request handling and logging • Extensible: Easily modify or add custom logic > 🆓 Free for community use! Ready to deploy in under 2 minutes.