ScavioScavio
ProductoPreciosDocumentación
Iniciar sesionComenzar
  1. Inicio
  2. Tutoriales
  3. Cómo crear un agregador de ofertas de empleo sin raspar
Tutorial

Cómo crear un agregador de ofertas de empleo sin raspar

Cree un agregador de búsqueda de empleo utilizando API de búsqueda en lugar de frágiles raspadores. Encuentre listados en bolsas de trabajo indexadas en Google y en hilos de contratación de Reddit.

Obtener clave API gratisDocumentacion API

Las bolsas de trabajo (de hecho, LinkedIn, Greenhouse) luchan activamente contra los scrapers. Pero sus listados están indexados por Google. En lugar de mantener raspadores que se rompen mensualmente, busque en Google listados de trabajos indexados y en Reddit para hilos sobre quién está contratando. Este tutorial crea un agregador que sobrevive a las actualizaciones anti-bot.

Requisitos previos

  • Python 3.8+
  • Una clave API de Scavio
  • Conocimientos básicos de los datos de las ofertas de empleo

Guia paso a paso

Paso 1: Buscar ofertas de trabajo en Google

Utilice el sitio: operadores para encontrar listados en bolsas de trabajo específicas indexadas por Google.

Python
import requests, os

H = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}

def find_jobs(role: str, location: str = '') -> list:
    query = f'{role} {location} site:greenhouse.io OR site:lever.co OR site:jobs.ashbyhq.com'
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'platform': 'google', 'query': query}, timeout=10)
    return [{'title': r.get('title',''), 'url': r.get('link',''), 'snippet': r.get('snippet','')}
            for r in resp.json().get('organic', [])]

Paso 2: Agregar búsqueda de hilo de contratación de Reddit

Encuentre publicaciones sobre quién está contratando en subreddits relevantes.

Python
def find_reddit_jobs(role: str) -> list:
    resp = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'platform': 'reddit', 'query': f'{role} hiring'}, timeout=10)
    threads = resp.json().get('organic', [])
    return [{'title': t.get('title',''), 'url': t.get('link',''), 'subreddit': t.get('subreddit',''),
             'score': t.get('score', 0)}
            for t in threads if 'hiring' in t.get('title','').lower() or 'job' in t.get('title','').lower()]

Paso 3: Deduplicar y clasificar

Elimine listados duplicados y clasifique por relevancia.

Python
def aggregate_jobs(role: str, location: str = '') -> dict:
    google_jobs = find_jobs(role, location)
    reddit_jobs = find_reddit_jobs(role)
    
    seen_urls = set()
    unique_jobs = []
    for job in google_jobs + reddit_jobs:
        url = job.get('url', '')
        if url and url not in seen_urls:
            seen_urls.add(url)
            unique_jobs.append(job)
    
    return {
        'role': role,
        'location': location,
        'total_found': len(unique_jobs),
        'from_google': len(google_jobs),
        'from_reddit': len(reddit_jobs),
        'listings': unique_jobs,
    }

results = aggregate_jobs('senior python developer', 'remote')
print(f"Found {results['total_found']} unique listings")
for job in results['listings'][:5]:
    print(f"  - {job['title']}")

Paso 4: Programar actualizaciones diarias

Ejecute el agregador según un cronograma y realice un seguimiento de los nuevos listados.

Python
import json
from pathlib import Path
from datetime import date

def daily_job_check(roles: list, location: str = '') -> dict:
    today = date.today().isoformat()
    all_listings = []
    
    for role in roles:
        results = aggregate_jobs(role, location)
        all_listings.extend(results['listings'])
    
    # Load previous listings to find new ones
    history_file = Path('job_history.json')
    seen = set()
    if history_file.exists():
        seen = set(json.loads(history_file.read_text()).get('urls', []))
    
    new_listings = [j for j in all_listings if j.get('url') not in seen]
    
    # Update history
    seen.update(j.get('url','') for j in all_listings)
    history_file.write_text(json.dumps({'urls': list(seen), 'last_run': today}))
    
    return {'date': today, 'new_listings': len(new_listings), 'total_tracked': len(seen), 'new': new_listings}

Ejemplo en Python

Python
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY'], 'Content-Type': 'application/json'}

def find_jobs(role, location=''):
    q = f'{role} {location} site:greenhouse.io OR site:lever.co'
    r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
        json={'platform': 'google', 'query': q}).json()
    return [{'title': x['title'], 'url': x.get('link','')} for x in r.get('organic',[])]

Ejemplo en JavaScript

JavaScript
async function findJobs(role, location = '') {
  const q = `${role} ${location} site:greenhouse.io OR site:lever.co`;
  const r = await 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: q})
  });
  return (await r.json()).organic?.map(x => ({title: x.title, url: x.link})) || [];
}

Salida esperada

JSON
A job listing aggregator that finds positions from Google-indexed job boards and Reddit hiring threads without maintaining any scrapers.

Tutoriales relacionados

  • Cómo obtener resultados de búsqueda de Google en Python
  • Cómo construir un agente de investigación autónomo con Scavio

Preguntas frecuentes

La mayoria de los desarrolladores completan este tutorial en 15 a 30 minutos. Necesitaras una clave API de Scavio (el plan gratuito funciona) y un entorno de Python o JavaScript.

Python 3.8+. Una clave API de Scavio. Conocimientos básicos de los datos de las ofertas de empleo. Una clave API de Scavio te da 50 creditos gratuitos al registrarte.

Si. El plan gratuito incluye 50 creditos al registrarte, mas que suficiente para completar este tutorial y crear un prototipo funcional.

Scavio tiene un paquete nativo de LangChain (langchain-scavio), un servidor MCP y una API REST simple que funciona con cualquier cliente HTTP. Este tutorial usa the raw REST API, pero puedes adaptarlo al framework que prefieras.

Recursos relacionados

Best Of

Las mejores API de búsqueda después de los cambios en el modo AI de Google I/O 2026

Read more
Glossary

Panorama de proveedores de API de búsqueda (2026)

Read more
Best Of

Los mejores proveedores de API SERP clasificados por precio en 2026

Read more
Glossary

Comparación gratuita de niveles de API de búsqueda

Read more
Comparison

Search APIs (Scavio, Tavily, SerpAPI) vs Headless Browser (Playwright, Puppeteer, Browserbase)

Read more
Comparison

Google Places API vs SERP Local Pack API

Read more

Empieza a construir

Cree un agregador de búsqueda de empleo utilizando API de búsqueda en lugar de frágiles raspadores. Encuentre listados en bolsas de trabajo indexadas en Google y en hilos de contratación de Reddit.

Obtener clave API gratuitaLeer la documentacion
ScavioScavio

API de busqueda en tiempo real para agentes de IA. Busca en todas las plataformas, no solo en Google.

Producto

  • Funciones
  • Precios
  • Panel
  • Afiliados

Desarrolladores

  • Documentacion
  • Referencia de API
  • Inicio rapido
  • Integracion MCP
  • Python SDK

Alternativas

  • Alternativa a Tavily
  • Alternativa a SerpAPI
  • Alternativa a Firecrawl
  • Alternativa a Exa

Herramientas

  • Formateador JSON
  • cURL a codigo
  • Contador de tokens
  • Todas las herramientas

© 2026 Scavio. Todos los derechos reservados.

Featured on TAAFT
Terminos de servicioPolitica de privacidad