El problema
Los solicitantes de empleo y las plataformas de contratación deben agregar ofertas de trabajo de múltiples fuentes (Google Jobs, páginas de carrera de la empresa, bolsas de trabajo de Reddit). Crear raspadores separados para cada fuente es frágil, costoso de mantener y se rompe cuando los sitios cambian su HTML.
La solucion de Scavio
Utilice el punto final de búsqueda de Google de Scavio con consultas relacionadas con el trabajo para agregar listados de Google Jobs, páginas de empresas y bolsas de trabajo. Combínelo con la búsqueda de Reddit de hilos de trabajo de la comunidad. Analice resultados estructurados por título, empresa, ubicación y URL sin mantener frágiles raspadores por sitio.
Antes
Antes del enfoque API, una plataforma de empleo mantenía 8 raspadores web separados para diferentes bolsas de trabajo. Tres de ellos se rompieron la misma semana cuando los sitios actualizaron su HTML. Repararlos tomó 2 días de desarrollador y las ofertas de trabajo estuvieron obsoletas durante 48 horas.
Después
Después de cambiar a la búsqueda basada en API, la plataforma solicita a Scavio datos estructurados de la lista de trabajos. No hay raspadores que mantener. Cuando los resultados de Google Jobs cambian de formato, la API se encarga del análisis. El tiempo que los desarrolladores dedicaban anteriormente al mantenimiento del raspador (2 días al mes) se redirigió a las funciones del producto.
Para quien es
Desarrolladores de plataformas de empleo, agencias de contratación y creadores de herramientas profesionales que necesitan agregar ofertas de trabajo sin mantener frágiles raspadores web.
Beneficios clave
- No hay raspadores que construir o mantener
- Datos de Google Jobs a través de API estructurada
- Hilos de trabajo de Reddit para listados de origen comunitario
- Los resultados estructurados incluyen título, empresa, URL
- Se adapta a cualquier número de consultas de búsqueda
Ejemplo en Python
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))Ejemplo en JavaScript
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;
}Plataformas utilizadas
Búsqueda web con grafo de conocimiento, PAA y resúmenes de IA
Comunidad, publicaciones y comentarios en hilos de cualquier subreddit