Chapter 05 · Apify Ultimate Scraper
Subchapter 5.12
references/workflows/lead-generation.mdMarkdown5 KBView on GitHub
When: User wants business contacts, emails, or phone numbers for businesses in a specific location.
compass/crawler-google-places
searchStringsArray, locationQuery, maxCrawledPlacescompass/enrich-google-maps-dataset-with-contacts
results[].url -> startUrls (or pass the dataset ID directly)datasetId (from step 1), maxRequestsPerCrawlStep 1: title, address, phone, website, categoryName, totalScore, reviewsCount, url
Step 2: emails[], phones[], socialLinks, linkedInUrl, twitterUrl
Google Maps results vary by language and location. Set language: "en" explicitly. Also set locationQuery to a specific city/region, not just a country.
When: User wants to find professionals by role, company, or industry.
harvestapi/linkedin-profile-search
keyword, location, title, limitharvestapi/linkedin-profile-scraper
results[].profileUrl -> urlsurls, includeEmail (set to true for email discovery)Step 1: fullName, headline, location, profileUrl, currentCompany
Step 2: experience[], education[], skills[], email, phone
Step 2 with includeEmail: true costs ~$0.01/profile. For 500 profiles, budget ~$5.
LinkedIn Actors are all PPE. Estimate and confirm with user before running at scale.
When: User wants daily 100-1,000 lead extraction from a Sales Navigator search for outbound sequences.
harvestapi/linkedin-profile-search
searchUrl (Sales Navigator search URL), maxResults, proxy settingsresults[].email -> email verification inputStep 1: fullName, email, companyName, jobTitle, connectionDegree, profileUrl
Step 2: result (valid/risky/invalid), score
harvestapi/linkedin-profile-search is PPE. 1,000 leads at typical rates runs ~$5-10. Confirm before scheduling daily runs.
Sales Navigator URL must be a saved search URL, not a one-time results URL. The URL changes each session unless saved.
When: User wants to find companies matching niche keywords via Google, AI-qualify them against ICP criteria, and push qualified leads to CRM.
apify/google-search-scraper
queries (search terms array), maxResultsPerPage, countryCodeapify/website-content-crawler
results[].organicResults[].url -> startUrlsstartUrls, maxCrawlDepth (set to 2), maxCrawlPages (set to 5)Step 1: organicResults[].url, organicResults[].title, organicResults[].snippet
Step 2: text (clean markdown), url, metadata.title, metadata.description
Pass only company root domains from SERP results into WCC - not individual blog post URLs. Filter organicResults[].url for root domains before piping.
When: User has an Apollo lead list with company websites and wants personalized cold email icebreakers generated from each company’s web presence.
apify/website-content-crawler
startUrls (homepage URLs from Apollo export), maxCrawlDepth (set to 2), maxCrawlPages (set to 5)results[].text -> prompt context per leadStep 1: text (clean markdown), metadata.title, metadata.description, url
Step 2: AI-generated icebreaker string per lead
Some Apollo exports include LinkedIn URLs instead of company websites. Filter the list for http URLs before passing to WCC - LinkedIn blocks crawlers.
When: User wants to find prospects actively posting problems that their product or service solves in relevant subreddits.
trudax/reddit-scraper-lite
startUrls (subreddit URLs), searchTerms (problem keywords), maxItems, sort (hot/new/top)results[].title, results[].body -> qualification promptStep 1: title, body, subreddit, url, score, numberOfComments, createdAt, author
Step 2: AI qualification score, extracted contact intent, suggested outreach angle
Reddit usernames are pseudonymous - there is no direct email enrichment path. The output is intent signals and post URLs for manual outreach via Reddit DM or to cross-reference against other platforms.