PLP por jobTitle/location
Busca de vagas por cargo e localizacao.
{
"target": "glassdoor.com.br",
"type": "plp",
"jobTitle": "desenvolvedor backend",
"location": "Brasil",
"isRemote": false,
"page": 2
} // docs
Extrai listagem de vagas (PLP) do Glassdoor com paginação, localização e suporte a remoto.
Nota importante: alguns campos podem retornar null em produção,
dependendo da página de origem. Nesta documentação, os exemplos de output são
preenchidos intencionalmente com valores não nulos para facilitar integração.
curl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{
"target": "glassdoor.com.br",
"type": "plp",
"jobTitle": "desenvolvedor backend",
"location": "Brasil",
"isRemote": false,
"page": 2
}'
A mesma seam também aparece no MCP hospedado como uma tool dedicada.
Os argumentos reaproveitam os campos do extract, mas target e type
já ficam fixos pela tool.
Endpoint
POST /v1/mcp
Tool name
glassdoor_com_br_plp
Auth
Bearer ou X-API-Key
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "glassdoor_com_br_plp",
"arguments": {
"jobTitle": "desenvolvedor backend",
"location": "Brasil",
"isRemote": false,
"page": 2,
"executionId": "exec_example_123"
}
}
}
Campos suportados nesta API do POST /v1/extract,
com regras específicas de obrigatoriedade e condicionais.
| Campo | Tipo | Status | Regra | Default | Exemplo |
|---|---|---|---|---|---|
| keyword Palavra-chave para buscas PLP. Em Google Search ela representa a query enviada ao Google; em Booking PLP é obrigatória; em outros PLPs pode substituir a URL. | string | Condicional | Pode ser usado como alternativa a jobTitle. | - | iphone 15 pro max |
| jobTitle Título/cargo para buscas de vagas (ex.: Catho e Glassdoor) quando a URL não for enviada. | string | Condicional | Obrigatorio quando keyword nao for enviada. | - | desenvolvedor backend |
| location Localizacao textual usada no Glassdoor PLP e no Hoteis.com PLP (ex.: Brasil, Curitiba, Sao Paulo). | string | Opcional | Texto de localizacao para resolver locId/locType no Glassdoor. | - | Brasil |
| isRemote Quando true, prioriza busca de vagas remotas no Glassdoor PLP. | boolean | Opcional | Quando true, prioriza busca remota. | - | true |
| target Fonte alvo da extração. | enum | Obrigatório | Sempre obrigatorio no payload e deve combinar com o seam. | - | mercadolivre.com.br |
| type Tipo da extração: pdp, idp, plp, review ou places. | enum | Obrigatório | Sempre obrigatorio no payload e deve combinar com o seam. | - | pdp |
| page Paginacao. Em PLP inicia em 1; em review (MercadoLivre, Booking e Hoteis) inicia em 0. | integer | Opcional | Pagina da listagem (inteiro >= 1). | - | 2 |
Busca de vagas por cargo e localizacao.
{
"target": "glassdoor.com.br",
"type": "plp",
"jobTitle": "desenvolvedor backend",
"location": "Brasil",
"isRemote": false,
"page": 2
} Busca remota sem location explicita, usando keyword como alternativa a jobTitle.
{
"target": "glassdoor.com.br",
"type": "plp",
"keyword": "engenheiro de dados",
"isRemote": true,
"page": 1
} Mapa de paths de saída com tipo esperado para esta API.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"data.source": "string",
"data.type": "string",
"data.parser": "string",
"data.url": "string",
"data.requestUrl": "string",
"data.extractedAt": "string (iso datetime)",
"data.query.jobTitle": "string",
"data.query.location": "string",
"data.query.locationId": "number",
"data.query.locationType": "string",
"data.query.locationTypeCode": "string",
"data.query.isRemote": "boolean",
"data.query.page": "number",
"data.searchTrackingKey": "string",
"data.totalResults": "number",
"data.primaryResults": "number",
"data.page": "number",
"data.resultsPerPage": "number",
"data.offset": "number",
"data.nextPage": "number",
"data.nextPageUrl": "string",
"data.items[].position": "number",
"data.items[].listingId": "number",
"data.items[].title": "string",
"data.items[].normalizedJobTitle": "string",
"data.items[].locationName": "string",
"data.items[].locationType": "string",
"data.items[].ageInDays": "number",
"data.items[].easyApply": "boolean",
"data.items[].sponsoredJob": "boolean",
"data.items[].payCurrency": "string",
"data.items[].payPeriod": "string",
"data.items[].salarySource": "string",
"data.items[].salaryRange.p10": "number",
"data.items[].salaryRange.p50": "number",
"data.items[].salaryRange.p90": "number",
"data.items[].url": "string",
"data.items[].applyUrl": "string",
"data.items[].seoUrl": "string",
"data.items[].discoverDate": "string",
"data.items[].descriptionSnippet": "string",
"data.items[].importConfigId": "number",
"data.items[].employer.id": "number",
"data.items[].employer.name": "string",
"data.items[].employer.shortName": "string",
"data.items[].employer.rating": "number",
"data.items[].employer.reviewCount": "number",
"data.items[].logoUrl": "string"
} {
"requestId": "8a6f5a73-e2f8-4982-9db0-1d7fd4f920e1",
"executionId": "f5039d9d-5e2e-4eac-b7fd-3256a6cb0f6d",
"data": {
"source": "glassdoor.com.br",
"type": "jlp",
"parser": "bff",
"url": "https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36",
"requestUrl": "https://www.glassdoor.com.br/job-search-next/bff/jobSearchResultsQuery",
"extractedAt": "2026-02-28T20:10:00.000Z",
"query": {
"jobTitle": "desenvolvedor backend",
"location": "Brasil",
"locationId": 36,
"locationType": "COUNTRY",
"locationTypeCode": "N",
"isRemote": false,
"page": 2
},
"searchTrackingKey": "tracking-key-123",
"totalResults": 630,
"primaryResults": 30,
"page": 2,
"resultsPerPage": 30,
"offset": 30,
"nextPage": 3,
"nextPageUrl": "https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36&p=3",
"items": [
{
"position": 31,
"listingId": 1009999255417,
"title": "Desenvolvedor Full Stack Júnior",
"normalizedJobTitle": "Desenvolvedor Full Stack",
"locationName": "Trabalho remoto",
"locationType": "S",
"ageInDays": 8,
"easyApply": true,
"sponsoredJob": false,
"payCurrency": "BRL",
"payPeriod": "MONTHLY",
"salarySource": "EMPLOYER_PROVIDED",
"salaryRange": {
"p10": 9000,
"p50": 12000,
"p90": 15000
},
"url": "https://www.glassdoor.com.br/partner/jobListing.htm?jobListingId=1009999255417",
"applyUrl": "https://www.glassdoor.com.br/partner/jobListing.htm?tgt=APPLY_START&jobListingId=1009999255417",
"seoUrl": "https://www.glassdoor.com.br/job-listing/desenvolvedor-full-stack-j%C3%BAnior-comerc-energia-JV_IC2479061_KO0,31_KE32,46.htm?jl=1009999255417",
"discoverDate": "2026-02-03T00:00:00.000Z",
"descriptionSnippet": "Atuacao com Python e arquitetura de servicos em nuvem.",
"importConfigId": 322429,
"employer": {
"id": 2759194,
"name": "Comerc Energia",
"shortName": "Comerc Energia",
"rating": 2.6,
"reviewCount": 198
},
"logoUrl": "https://media.example.com/jeitto-square.png"
}
]
}
} | Path | Tipo | Descrição | Exemplo |
|---|---|---|---|
| data.extractedAt | string (iso datetime) | Data/hora ISO da extração. | 2026-02-28T20:10:00.000Z |
| data.items[].ageInDays | number | Idade da vaga em dias. | 8 |
| data.items[].applyUrl | string | URL de candidatura quando disponivel. | https://www.glassdoor.com.br/partner/jobListing.htm?tgt=APPLY_START&jobListingId=1009999255417 |
| data.items[].descriptionSnippet | string | Trecho resumido da descricao da vaga. | Atuacao com Python e arquitetura de servicos em nuvem. |
| data.items[].discoverDate | string | Data de descoberta/publicacao da vaga. | 2026-02-03T00:00:00.000Z |
| data.items[].easyApply | boolean | Indica se permite candidatura rapida. | true |
| data.items[].employer.id | number | Identificador do empregador. | 2759194 |
| data.items[].employer.name | string | Nome do empregador. | Comerc Energia |
| data.items[].employer.rating | number | Nota do empregador. | 2.6 |
| data.items[].employer.reviewCount | number | Quantidade de avaliacoes do empregador. | 198 |
| data.items[].employer.shortName | string | Nome curto do empregador. | Comerc Energia |
| data.items[].importConfigId | number | Identificador interno de configuracao de importacao. | 322429 |
| data.items[].listingId | number | Identificador da vaga no Glassdoor. | 1009999255417 |
| data.items[].locationName | string | Nome textual da localizacao da vaga. | Trabalho remoto |
| data.items[].locationType | string | Tipo de localizacao da vaga. | S |
| data.items[].logoUrl | string | URL do logo do empregador. | https://media.example.com/jeitto-square.png |
| data.items[].normalizedJobTitle | string | Titulo normalizado do cargo. | Desenvolvedor Full Stack |
| data.items[].payCurrency | string | Moeda de salario. | BRL |
| data.items[].payPeriod | string | Periodo de pagamento (ex.: MONTHLY). | MONTHLY |
| data.items[].position | number | Posicao absoluta do item dentro da busca. | 31 |
| data.items[].salaryRange.p10 | number | Percentil inferior da faixa salarial. | 9000 |
| data.items[].salaryRange.p50 | number | Percentil mediano da faixa salarial. | 12000 |
| data.items[].salaryRange.p90 | number | Percentil superior da faixa salarial. | 15000 |
| data.items[].salarySource | string | Fonte da informacao salarial. | EMPLOYER_PROVIDED |
| data.items[].seoUrl | string | URL SEO publica da vaga. | https://www.glassdoor.com.br/job-listing/desenvolvedor-full-stack-j%C3%BAnior-comerc-energia-JV_IC2479061_KO0,31_KE32,46.htm?jl=1009999255417 |
| data.items[].sponsoredJob | boolean | Indica se a vaga e patrocinada. | false |
| data.items[].title | string | Titulo da vaga. | Desenvolvedor Full Stack Júnior |
| data.items[].url | string | URL principal do item/vaga. | https://www.glassdoor.com.br/partner/jobListing.htm?jobListingId=1009999255417 |
| data.nextPage | number | Numero da proxima pagina quando disponivel. | 3 |
| data.nextPageUrl | string | URL de preview para a proxima pagina. | https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36&p=3 |
| data.offset | number | Deslocamento calculado para paginação. | 30 |
| data.page | number | Pagina atual. | 2 |
| data.parser | string | Parser utilizado internamente para extrair o resultado. | bff |
| data.primaryResults | number | Quantidade de itens retornados na pagina atual. | 30 |
| data.query.isRemote | boolean | Indica se a busca foi marcada como remota. | false |
| data.query.jobTitle | string | Cargo utilizado na busca. | desenvolvedor backend |
| data.query.location | string | Localizacao resolvida para a busca. | Brasil |
| data.query.locationId | number | Identificador interno de localizacao no Glassdoor. | 36 |
| data.query.locationType | string | Tipo de localizacao no BFF (COUNTRY, STATE, CITY). | COUNTRY |
| data.query.locationTypeCode | string | Codigo resumido de localizacao (N, S, C). | N |
| data.query.page | number | Pagina solicitada. | 2 |
| data.requestUrl | string | URL efetivamente requisitada ao endpoint de origem. | https://www.glassdoor.com.br/job-search-next/bff/jobSearchResultsQuery |
| data.resultsPerPage | number | Quantidade de resultados por pagina. | 30 |
| data.searchTrackingKey | string | Chave de rastreio de busca retornada pelo Glassdoor. | tracking-key-123 |
| data.source | string | Origem dos dados extraidos. | glassdoor.com.br |
| data.totalResults | number | Total de vagas encontradas para o filtro. | 630 |
| data.type | string | Tipo normalizado do retorno para listagem de vagas. | jlp |
| data.url | string | URL final de busca considerada para a extração. | https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36 |
| executionId | string (uuid) | Campo executionId retornado no payload de resposta. | f5039d9d-5e2e-4eac-b7fd-3256a6cb0f6d |
| requestId | string (uuid) | Campo requestId retornado no payload de resposta. | 8a6f5a73-e2f8-4982-9db0-1d7fd4f920e1 |
| Status | errorCode | Quando acontece |
|---|---|---|
| 400 | INVALID_PAYLOAD | JSON inválido ou violação das regras de validação do payload. |
| 401 | UNAUTHORIZED | Header Authorization ausente ou token/chave inválida. |
| 402 | INSUFFICIENT_CREDITS | Saldo de créditos insuficiente para a API solicitada. |
| 403 | FORBIDDEN | Usuário sem acesso ou API temporariamente desabilitada. |
| 409 | EXECUTION_CONFLICT | executionId conflita com uma execução em estado incompatível. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | Limite de taxa ou limite de requisições em voo excedido. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_INVOCATION_FAILED / WORKER_FUNCTION_ERROR / WORKER_INVALID_RESPONSE / INTERNAL_ERROR | Falha de servidor no worker, provider/proxy ou gateway. Nesses casos os créditos são estornados automaticamente. |