Job market and recruitment workflows
Job listing research
When: User wants to find and analyze job postings by role, company, or location.
Pipeline
- Search jobs ->
harvestapi/linkedin-job-search- Key input:
keyword,location,datePosted,limit
- Key input:
- Get job details ->
apimaestro/linkedin-job-detail- Pipe:
results[].jobUrl->urls - Key input:
urls
- Pipe:
Output fields
Step 1: title, company, location, jobUrl, postedDate, applicantsCount
Step 2: description, requirements, seniority, employmentType, salary
Gotcha
Both Actors are PPE. Step 1: ~$0.001/job. Step 2: ~$0.005/job. For 200 jobs, total ~$1.20. Estimate and confirm with user.
Candidate sourcing
When: User wants to find potential candidates matching specific criteria.
Pipeline
- Search profiles ->
harvestapi/linkedin-profile-search- Key input:
keyword,title,location,industry,limit
- Key input:
- Enrich with details ->
apimaestro/linkedin-profile-full-sections-scraper- Pipe:
results[].profileUrl->urls - Key input:
urls
- Pipe:
Output fields
Step 1: fullName, headline, location, profileUrl, currentCompany
Step 2: experience[], education[], skills[], certifications[], languages[]
Gotcha
Step 2 (apimaestro/linkedin-profile-full-sections-scraper) costs ~$0.01/profile - the most expensive LinkedIn scraper. Use sparingly for shortlisted candidates only.
Sales signal outreach - job posting as buying signal
When: User wants to monitor company job postings as a signal to identify sales opportunities - e.g., a "Head of Data Engineering" hire suggests budget for data tooling.
Pipeline
- Monitor target postings ->
harvestapi/linkedin-job-search- Key input:
searchUrl(LinkedIn Jobs URL with company or role filters),keywords
- Key input:
- Get company context ->
harvestapi/linkedin-company- Pipe:
results[].companyUrl->companyUrls
- Pipe:
Output fields
Step 1: title, companyName, description, employmentType, seniorityLevel, jobUrl
Step 2: name, industry, employeeCount, description, specialties[]
Gotcha
Job descriptions contain implicit buying signals - tech stack mentions, pain points, and headcount growth. Pass description to an LLM to extract inferred tech stack and budget tier before prioritizing outreach. Contact finding (Hunter.io) uses the native n8n node, not an Apify Actor.
Upwork job monitoring for freelancers
When: User wants to continuously monitor Upwork for new jobs matching their skills.
Pipeline
- Scrape Upwork search ->
apify/playwright-scraper- Key input:
startUrls(Upwork search URL with skill filters),pseudoUrls,maxCrawledPages
- Key input:
Output fields
Step 1: title, description, budget, clientJobsPosted, clientHireRate, postedAt, url
Gotcha
No dedicated Upwork Actor exists in Apify Store - verify with apify actors search "upwork" --user-agent apify-agent-skills/apify-ultimate-scraper for community options before defaulting to apify/playwright-scraper. Upwork pages are JS-heavy so Playwright is required over basic HTTP scraping. For high-frequency monitoring (every 15 min), store seen job URLs to avoid re-processing duplicates.
GitHub contributor discovery
When: User wants to find developers who contribute to specific open-source projects.
Pipeline
- Get contributors ->
janbuchar/github-contributors-scraper- Key input:
repoUrls
- Key input:
Output fields
Step 1: username, contributions, profileUrl, avatarUrl