linkedin-jobs-scraper

Web scraping skill for LinkedIn job postings using public API endpoints. Extract job data without authentication.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "linkedin-jobs-scraper" with this command: npx skills add nicolassantos23/linkedin-jobs-scraper

LinkedIn Jobs Scraper Skill

Esta skill extrai vagas de emprego do LinkedIn usando a API pública não autenticada. Funciona em VPS sem navegador, apenas com requests + BeautifulSoup.

Busca rápida (título, empresa, local, URL) em segundos.
Detalhes completos (descrição, data) sob demanda por vaga.

⚠️ Avisos

  • Legal: Scraping de dados públicos é legal nos EUA (hiQ v. LinkedIn, 2022), mas viola os ToS do LinkedIn
  • Riscos: LinkedIn pode bloquear o IP se houver excesso de requisições
  • Volume: Limite a <100 buscas/dia para uso pessoal
  • Sem login: Nenhuma autenticação é usada

Uso via CLI

Busca rápida (padrão)

python scraper.py --keywords "python developer" --location "Brazil" --limit 10

Busca com filtros

python scraper.py \
  --keywords "data scientist" \
  --location "Brazil" \
  --remote only \
  --experience mid-senior \
  --job-type full-time \
  --posted last-week \
  --limit 20 \
  --output jobs.csv

Uso via Python

from scraper import LinkedInJobsScraper

scraper = LinkedInJobsScraper()

# Busca rápida (retorna em segundos)
jobs = scraper.search_jobs(
    keywords="python developer",
    location="Brazil",
    remote="only",
    limit=25
)

# Cada job tem: title, company, location, url, job_id
for job in jobs:
    print(f"{job['title']} - {job['company']} - {job['location']}")

# Detalhes completos de uma vaga específica (1 request extra)
details = scraper.get_job_details(job_id="4413133140")
print(details['description'][:300])  # descrição completa
print(details['posted_date'])        # ex: "1 week ago"

Parâmetros

ParâmetroValoresDescrição
--keywordstextoTítulo ou habilidade
--locationtextoCidade, estado ou país
--remoteonly, yes, noFiltro remoto
--experienceinternship, entry, associate, mid-senior, director, executiveNível
--job-typefull-time, part-time, contract, temporary, internshipTipo
--postedlast-24h, last-week, last-month, anytimeData
--limitnúmero (default: 25)Máx. vagas
--outputarquivo .csv ou .jsonSalvar resultados

Dados Retornados

Busca rápida (search_jobs)

{
  "title": "Python Engineer",
  "company": "Nortal",
  "location": "Greater Porto Alegre",
  "url": "https://br.linkedin.com/jobs/view/python-engineer...",
  "job_id": "4413133140"
}

Detalhes completos (get_job_details)

{
  "job_id": "4413133140",
  "title": "Python Engineer - Work from home",
  "company": "Nortal",
  "location": "Greater Porto Alegre",
  "posted_date": "1 week ago",
  "description": "Full job description text...",
  "employment_type": "Full-time",
  "seniority_level": "Mid-Senior level",
  "job_function": "Engineering",
  "industries": "Software Development"
}

Exemplos

# Vagas Python remotas no Brasil
python scraper.py --keywords "python" --location "Brazil" --remote only --limit 10

# Vagas de Data Scientist sênior nesta semana
python scraper.py --keywords "data scientist" --location "United States" --experience mid-senior --posted last-week --limit 5 --output ds_jobs.json
from scraper import LinkedInJobsScraper
import pandas as pd

scraper = LinkedInJobsScraper()
jobs = scraper.search_jobs("machine learning", "Europe", remote="yes", limit=50)

df = pd.DataFrame(jobs)
print(df['company'].value_counts().head(10))

Estrutura

linkedin-jobs-scraper/
├── SKILL.md
├── scraper.py
├── __init__.py
└── README.md

Dependências

pip install requests beautifulsoup4

pandas é opcional (use se quiser analisar os dados).

Boas Práticas

  • Delay de 2-5s entre requisições (automático)
  • Máximo ~100 requisições/dia
  • User-Agent rotacionado automaticamente
  • Cache os resultados (dados públicos mudam pouco)
  • Para descrições, chame get_job_details() só quando necessário

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Tmp.SOVvMo1n6G

This skill should be used when the user asks about OurFamilyWizard (OFW) co-parenting data. Triggers on phrases like "check OFW", "OurFamilyWizard inbox", "O...

Registry SourceRecently Updated
General

Docker Health Monitor

Monitor Docker container health: running status, CPU/memory usage, restart counts, and available image updates. Use when a user requests Docker health checks...

Registry SourceRecently Updated
General

Video Loop Ai

Skip the learning curve of professional editing software. Describe what you want — make this video loop seamlessly without a visible cut — and get seamless l...

Registry SourceRecently Updated
General

Camsnap

Take webcam snapshots with path validation, safe resource handling, and flexible output options.

Registry SourceRecently Updated