InfoJobs Scraper
Pricing
from $1.99 / 1,000 results
InfoJobs Scraper
Collect current InfoJobs Brazil vacancies and matching full descriptions through public HTTP APIs. Prefilled keyword/city search, source location autocomplete, bounded detail requests and explicit proxy controls. No paid vendor API key or synthetic jobs.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Jobs Scraper
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
14 days ago
Last modified
Categories
Security
Limited permissionsShare
What does InfoJobs Scraper do?
Collect current public InfoJobs Brazil jobs from InfoJobs, with complete descriptions from the website's own read-only detail API. The default requests up to ten jobs for desenvolvedor in São Paulo - SP. Full-detail output requires a matching native vacancy ID and detail-header title. The Actor does not create jobs, guess compensation, submit applications, access private accounts or support the separate Spain website.
Why scrape public InfoJobs jobs?
Research published hiring demand, advertised skills and compensation using source-attributed records. The default HTTP transport reads source HTML and the public autocomplete/detail JSON GET APIs without launching a browser. Configured authorized proxy access is supported; direct-IP access may be denied. Detail requests run with bounded concurrency, three by default and at most four; pagination remains sequential. HTTP mode does not download browser assets. An explicit browser transport remains available and skips images, media and fonts. On Apify, use scheduling, API access, integrations, monitoring and dataset exports. No paid vendor API key is required, but configured Apify proxy and platform usage can cost money.
What data can be extracted?
| Fields | Type | Meaning |
|---|---|---|
| jobId, applyUrl | string | Native vacancy identity and public application-page URL |
| jobTitle, companyName | string | Published job title and public employer label |
| location, postedDate | string | Actual source location and listing date label |
| salary, jobType, experienceLevel | string | Published values only, when available |
| companyUrl | string | Public employer-page link when exposed |
| description, descriptionHtml | string | Complete description and source markup |
| requirements, benefits | array | Explicit source values when separately available |
| rawData | object | Source-card text, sanitized detail fragment and identity evidence |
| extractionStatus, dataMode | string | Detail completeness and public-source provenance |
| sourcePortal, country, scrapedAt | string | InfoJobs Brazil context and retrieval timestamp |
All 20 output fields are described in the dataset schema. Unknown null, blank and empty optional values are omitted; actual source zero and false values are retained. Core descriptions may contain requirements and benefits as prose even when separate arrays are not exposed. The Actor never invents separate values.
How to scrape InfoJobs
- Keep the prefilled keyword and qualified city label or provide an official employment-search URL.
- Choose maxItems, normally ten, and leave includeDetails enabled for complete descriptions.
- Review proxyEnabled and proxyConfiguration; the default explicitly requests Brazil residential proxies, matching the verified local route.
- Run the Actor and inspect real dataset rows, full-detail counts and source diagnostics.
- Download the dataset in various formats such as JSON, HTML, CSV, or Excel.
See the input tab for full configuration options. searchQuery overrides keyword when generating a URL. An explicit startUrl preserves its existing palabra, city/state query parameters and initial page. City/state IDs are resolved through the actual public autocomplete API, not hard-coded from an unrelated location. Ambiguous names fail; add the state abbreviation, for example São Paulo - SP. locationType chooses city or state. An explicit source city/state ID takes precedence over the shortcut location.
{"keyword": "desenvolvedor","location": "São Paulo - SP","locationType": "city","country": "BR","maxItems": 10,"includeDetails": true,"transport": "http","detailConcurrency": 3,"requestTimeoutSecs": 30,"proxyEnabled": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "BR"},"googleSearchFallbackEnabled": false}
Filters and important limitations
Legacy sortBy, jobType, experienceLevel, datePosted and remoteOnly shortcuts were not implemented in the older code. Unsupported non-default values now fail explicitly instead of silently returning unfiltered jobs. Use source-provided native filters in startUrl for those searches. Not every native filter combination has been verified.
proxyEnabled=true honors exactly the supplied proxyConfiguration. There is no hidden fallback to another paid proxy tier or direct access. Set proxyEnabled=false explicitly for direct access; the source may deny it. Access challenges are recorded, not solved. Source HTTP denials are never retried or assigned a new proxy session. In HTTP mode, a 401, 429 or 503 stops further detail scheduling. An individual detail 403 is skipped without retry; other distinct jobs already listed by the same current search may still be checked on the same route until the requested maximum is reached. A denied listing or location endpoint stops that run. Explicit browser mode conservatively stops detail scheduling on 401/403/429.
networkRetries=1 permits one short-delay retry of a transport exception on the same configured route, not an HTTP denial, authentication error or rate limit. Set zero to disable it. No known denied vacancy is retried merely to fill the result count; fewer verified source jobs remain fewer records.
transport=http is the default API-first mode. It parses the real HTML search response and calls the site's public JSON endpoints with the same configured proxy route. A run keeps consistent request headers and any anonymous cookies issued by the source; no browser cookies, user login or private account session is imported. Cookies and proxy credentials are never stored in the output. Set transport=browser explicitly for the browser implementation; there is no automatic switch to it after a denial. Source request status, timings, actual transport and requested proxy groups/country are recorded without credentials.
includeDetails=false explicitly selects listing-only mode and cannot prove full-description recovery. includeSalary=false removes top-level salary; includeCompanyDetails=false removes the company URL. Original public source text may still mention pay and the employer. Hidden form inputs, scripts, styles, buttons and hidden DOM nodes are removed from stored detail fragments. Treat remaining HTML as untrusted and sanitize it before rendering.
Optional paid Google fallback is off. It is accepted only with includeDetails=false, calls another Apify Actor and adds charges. Indexed snippets are labelled as indexed output, never as current full-description recovery evidence. A zero-record run fails rather than pushing diagnostics as fake jobs.
Observed output shape
These simplified public records were observed on October 23, 2026. They illustrate native identity only; they are not runtime fallback data or a promise those vacancies remain open. Actual successful full-detail records also include descriptions and matching rawData.sourceIdentity evidence.
[{"jobId": "12142077","jobTitle": "Desenvolvedor Full-Stack","location": "São Paulo - SP","applyUrl": "https://www.infojobs.com.br/vaga-de-desenvolvedor-full-stack-em-sao-paulo__12142077.aspx","extractionStatus": "detail_api"},{"jobId": "12057978","jobTitle": "Desenvolvedor De Banco De Dados Sênior","location": "São Paulo - SP","applyUrl": "https://www.infojobs.com.br/vaga-de-desenvolvedor-banco-dados-senior-em-sao-paulo__12057978.aspx","extractionStatus": "detail_api"}]
How much will scraping cost?
Consult the current Store pricing tab for result-event charges and platform usage terms. Proxy transfer, browser memory, run duration, storage and optional child Actors can add costs. Ten results are a default limit, not a guaranteed free allowance. Start with small bounded tests and inspect the actual run usage; no fixed records-per-dollar guarantee is made.
Local development, privacy and support
Install the locked dependencies with npm ci and test with apify run. Local storage stays on the local machine; it is not production verification. A separate cloud build and successful run with actual output are required before clearing maintenance.
Only public vacancy data is requested. No applications, candidate profiles or private employer dashboards are accessed. Public descriptions can still contain personal information; process it only for a legitimate purpose under applicable rules, and respect the source's terms. Availability, regional access, layout changes and removed jobs can affect results. Small searches or failed details may produce fewer than maxItems. Review SOURCE_METADATA, LOCATION_RESOLUTION and RUN_SUMMARY for evidence. Report reproducible problems through the Issues tab without sharing credentials; use the API tab for programmatic integration.