The Problem
Job seekers and recruitment platforms need to aggregate job listings across multiple sources (Google Jobs, company career pages, Reddit job boards). Building separate scrapers for each source is fragile, expensive to maintain, and breaks when sites change their HTML.
The Scavio Solution
Use Scavio's Google search endpoint with job-related queries to aggregate listings from Google Jobs, company pages, and job boards. Combine with Reddit search for community job threads. Parse structured results for title, company, location, and URL without maintaining fragile per-site scrapers.
Before
Before the API approach, a job platform maintained 8 separate web scrapers for different job boards. Three broke in the same week when the sites updated their HTML. Fixing them took 2 developer-days and job listings were stale for 48 hours.
After
After switching to API-based search, the platform queries Scavio for structured job listing data. No scrapers to maintain. When Google Jobs results change format, the API handles the parsing. Developer time previously spent on scraper maintenance (2 days/month) was redirected to product features.
Who It Is For
Job platform developers, recruitment agencies, and career tool builders who need to aggregate job listings without maintaining fragile web scrapers.
Key Benefits
- No scrapers to build or maintain
- Google Jobs data through structured API
- Reddit job threads for community-sourced listings
- Structured results include title, company, URL
- Scales to any number of search queries
Python Example
import requests, os, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def aggregate_jobs(role: str, location: str) -> list[dict]:
query = f'{role} jobs {location}'
# Search Google for job listings
google = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}, timeout=10).json()
# Search Reddit for job threads
reddit = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'reddit', 'query': f'{role} hiring {location}'}, timeout=10).json()
jobs = []
for r in google.get('organic', []):
if any(kw in r.get('title', '').lower() for kw in ['job', 'hiring', 'career', 'position']):
jobs.append({'source': 'google', 'title': r.get('title'),
'url': r.get('link'), 'snippet': r.get('snippet')})
for r in reddit.get('organic', []):
jobs.append({'source': 'reddit', 'title': r.get('title'),
'url': r.get('link')})
return jobs
for job in aggregate_jobs('python developer', 'remote'):
print(json.dumps(job))JavaScript Example
async function aggregateJobs(role, location) {
const query = `${role} jobs ${location}`;
const [google, reddit] = await Promise.all([
fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: 'google', query })
}).then(r => r.json()),
fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ platform: 'reddit', query: `${role} hiring ${location}` })
}).then(r => r.json())
]);
const jobs = [];
for (const r of (google.organic || [])) {
if (/job|hiring|career|position/i.test(r.title)) {
jobs.push({ source: 'google', title: r.title, url: r.link, snippet: r.snippet });
}
}
for (const r of (reddit.organic || [])) {
jobs.push({ source: 'reddit', title: r.title, url: r.link });
}
return jobs;
}Platforms Used
Web search with knowledge graph, PAA, and AI overviews
Community, posts & threaded comments from any subreddit