PLP by jobTitle/location
Search for vacancies by position and location.
{
"target": "glassdoor.com.br",
"type": "plp",
"jobTitle": "desenvolvedor backend",
"location": "Brasil",
"isRemote": false,
"page": 2
} // docs
Extracts job listing (PLP) from Glassdoor with pagination, location and remote support.
glassdoor.com.br:plp · 1 credit per request
Standard credit cost. Your account pricing is shown in the sandbox.
Try this operation in the sandboxcurl -X POST https://api.geckoapi.com.br/v1/extract \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"target": "glassdoor.com.br",
"type": "plp",
"jobTitle": "desenvolvedor backend",
"location": "Brasil",
"isRemote": false,
"page": 2
}' Keep your API key on your server. See the quickstart for authentication and response handling.
The hosted MCP tool fixes target and type for this operation. Its remaining arguments use the same input rules as Extract.
POST /v1/mcp · Bearer or X-API-Key authentication
{
"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"
}
}
} Conditional fields depend on the alternatives and constraints in the rule column. Fields marked unsupported are omitted.
| Field | Type | Requirement | Rule | Default | Example |
|---|---|---|---|---|---|
| keyword Keyword for PLP searches. In Google Search it represents the query sent to Google; in Booking PLP is mandatory; in other PLPs it can replace URL. | string | Conditional | Can be used as an alternative to jobTitle. | - | engenheiro de dados |
| jobTitle Title/position for job searches (e.g.: Catho and Glassdoor) when URL is not sent. | string | Conditional | Mandatory when keyword is not sent. | - | desenvolvedor backend |
| location Textual location used in Glassdoor PLP, Hoteis.com PLP, Trivago PLP and Tripadvisor PLP (e.g.: Brazil, Curitiba, Sao Paulo). | string | Optional | Location text to resolve locId/locType to Glassdoor. | - | Brasil |
| isRemote When true, prioritizes search for remote vacancies in Glassdoor PLP. | boolean | Optional | When true, prioritizes remote search. | - | false |
| target Target source for extraction. | enum | Required | Always mandatory in the payload and must match the operation. | - | glassdoor.com.br |
| type Extraction type: pdp, idp, plp, ilp, quote, review or places. | enum | Required | Always mandatory in the payload and must match the operation. | - | plp |
| page Pagination. In PLP, including Trivago, and in Reclame AQUI ILP starts in 1; in review (MercadoLivre, Booking and Hotels) starts in 0. The Reclame AQUI ILP even accepts the page 100. | integer | Optional | Listing page (integer >= 1). | - | 2 |
Search for vacancies by position and location.
{
"target": "glassdoor.com.br",
"type": "plp",
"jobTitle": "desenvolvedor backend",
"location": "Brasil",
"isRemote": false,
"page": 2
} Remote search without explicit location, using keyword as an alternative to jobTitle.
{
"target": "glassdoor.com.br",
"type": "plp",
"keyword": "engenheiro de dados",
"isRemote": true,
"page": 1
} Leaf paths and expected types. Field names and enum values are part of the API contract.
{
"requestId": "string (uuid)",
"executionId": "string (uuid)",
"notFound": "boolean (optional; true when the upstream entity was not found and data is null)",
"data.source": "string",
"data.type": "string",
"data.parser": "\"1.0.0\"",
"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"
} Illustrative response. Product names, reviews and other source content retain their original language. Missing and null values do not imply zero stock, free shipping or zero reviews.
{
"requestId": "8a6f5a73-e2f8-4982-9db0-1d7fd4f920e1",
"executionId": "f5039d9d-5e2e-4eac-b7fd-3256a6cb0f6d",
"data": {
"source": "glassdoor.com.br",
"type": "jlp",
"parser": "1.0.0",
"url": "https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36",
"requestUrl": "https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36",
"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 | Type | Description | Example |
|---|---|---|---|
| data.extractedAt | string (iso datetime) | Extraction date/time ISO. | 2026-02-28T20:10:00.000Z |
| data.items[].ageInDays | number | Vacancy age in days. | 8 |
| data.items[].applyUrl | string | URL application when available. | https://www.glassdoor.com.br/partner/jobListing.htm?tgt=APPLY_START&jobListingId=1009999255417 |
| data.items[].descriptionSnippet | string | Summary excerpt from the job description. | Atuacao com Python e arquitetura de servicos em nuvem. |
| data.items[].discoverDate | string | Date of discovery/publication of the vacancy. | 2026-02-03T00:00:00.000Z |
| data.items[].easyApply | boolean | Indicates whether quick application is allowed. | true |
| data.items[].employer.id | number | Employer identifier. | 2759194 |
| data.items[].employer.name | string | Employer name. | Comerc Energia |
| data.items[].employer.rating | number | Note from employer. | 2.6 |
| data.items[].employer.reviewCount | number | Number of employer reviews. | 198 |
| data.items[].employer.shortName | string | Employer short name. | Comerc Energia |
| data.items[].importConfigId | number | Internal import configuration identifier. | 322429 |
| data.items[].listingId | number | Identifier of the vacancy in Glassdoor. | 1009999255417 |
| data.items[].locationName | string | Textual name of the vacancy location. | Trabalho remoto |
| data.items[].locationType | string | Type of vacancy location. | S |
| data.items[].logoUrl | string | URL of the employer's logo. | https://media.example.com/jeitto-square.png |
| data.items[].normalizedJobTitle | string | Standard job title. | Desenvolvedor Full Stack |
| data.items[].payCurrency | string | Salary currency. | BRL |
| data.items[].payPeriod | string | Payment period (e.g. MONTHLY). | MONTHLY |
| data.items[].position | number | Absolute position of the item within the search. | 31 |
| data.items[].salaryRange.p10 | number | Bottom percentile of salary range. | 9000 |
| data.items[].salaryRange.p50 | number | Median percentile of salary range. | 12000 |
| data.items[].salaryRange.p90 | number | Top percentile of salary range. | 15000 |
| data.items[].salarySource | string | Source of salary information. | EMPLOYER_PROVIDED |
| data.items[].seoUrl | string | URL SEO publishes the vacancy. | 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 | Indicates whether the vacancy is sponsored. | false |
| data.items[].title | string | Job title. | Desenvolvedor Full Stack Júnior |
| data.items[].url | string | URL main item/spot. | https://www.glassdoor.com.br/partner/jobListing.htm?jobListingId=1009999255417 |
| data.nextPage | number | Next page number when available. | 3 |
| data.nextPageUrl | string | URL preview for the next page. | https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36&p=3 |
| data.offset | number | Calculated offset for paging. | 30 |
| data.page | number | Current page. | 2 |
| data.parser | "1.0.0" | Stable version of the API response format. | 1.0.0 |
| data.primaryResults | number | Number of items returned on the current page. | 30 |
| data.query.isRemote | boolean | Indicates whether the search was marked as remote. | false |
| data.query.jobTitle | string | Position used in the search. | desenvolvedor backend |
| data.query.location | string | Resolved location for the search. | Brasil |
| data.query.locationId | number | Internal location identifier in Glassdoor. | 36 |
| data.query.locationType | string | Location type in BFF (COUNTRY, STATE, CITY). | COUNTRY |
| data.query.locationTypeCode | string | Summary location code (N, S, C). | N |
| data.query.page | number | Page requested. | 2 |
| data.requestUrl | string | Same value as `data.url`; never exposes the queried internal endpoint. | https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36 |
| data.resultsPerPage | number | Number of results per page. | 30 |
| data.searchTrackingKey | string | Search trace key returned by Glassdoor. | tracking-key-123 |
| data.source | string | Source of extracted data. | glassdoor.com.br |
| data.totalResults | number | Total vacancies found for the filter. | 630 |
| data.type | string | Normal return type for job listing. | jlp |
| data.url | string | URL end of search considered for extraction. | https://www.glassdoor.com.br/Vaga/jobs.htm?sc.keyword=desenvolvedor+backend&locT=N&locId=36 |
| executionId | string (uuid) | Field executionId returned in the response payload. | f5039d9d-5e2e-4eac-b7fd-3256a6cb0f6d |
| notFound | boolean (optional; true when the upstream entity was not found and data is null) | Present and true when the upstream entity was not found. In this case data is null and the request still completes successfully. | N/A |
| requestId | string (uuid) | Field requestId returned in the response payload. | 8a6f5a73-e2f8-4982-9db0-1d7fd4f920e1 |
When supported by this operation, an entity not found upstream can return HTTP 200 with data: null and notFound: true. Check the documented response fields before interpreting an empty result. Source-specific behavior and exceptions are described above.
| HTTP status | Error code | Meaning |
|---|---|---|
| 400 | INVALID_PAYLOAD | Invalid JSON or a request that violates the documented validation rules. |
| 401 | UNAUTHORIZED | Missing authorization or an invalid API key or token. |
| 402 | INSUFFICIENT_CREDITS | The account has insufficient credits for this operation. |
| 403 | FORBIDDEN | The account does not have access, or the API is temporarily disabled. |
| 409 | EXECUTION_CONFLICT | The execution identifier conflicts with an incompatible execution state. |
| 429 | RATE_LIMIT_EXCEEDED / TOO_MANY_INFLIGHT_REQUESTS | A rate limit or simultaneous request limit was exceeded. |
| 5xx | UPSTREAM_TIMEOUT / UPSTREAM_HTTP_ERROR / WORKER_FUNCTION_ERROR | An upstream, worker or gateway failure. Failed requests follow the platform refund policy. |