Trabalha Brasil Scraper avatar

Trabalha Brasil Scraper

Pricing

from $0.48 / 1,000 item extracteds

Go to Apify Store
Trabalha Brasil Scraper

Trabalha Brasil Scraper

Search and monitor public Trabalha Brasil vacancies with role, employer, location, description, salary, dates, and canonical URL.

Pricing

from $0.48 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Search public trabalha brasil vacancy pages and save structured job records for recruiting, labor-market research, and scheduled monitoring.

The Actor accepts role keywords, an optional Brazilian city and state, or public Trabalha Brasil listing URLs. It paginates current listings, deduplicates vacancies, and can enrich every result from its public detail page.

What does Trabalha Brasil Scraper do?

Trabalha Brasil Scraper turns public vacancy pages into integration-ready dataset rows.

It extracts:

  • vacancy ID and title;
  • employer name when shown;
  • city, state, and displayed location;
  • public description and requirements;
  • employment and work-model labels;
  • salary text and structured salary values when available;
  • publication and validity dates;
  • canonical vacancy and discovery URLs;
  • extraction timestamp.

It does not apply to jobs, create accounts, access candidate data, or bypass login-only pages.

Who is it for?

Recruiters

Build a current shortlist of public vacancies by role or location.

Labor-market analysts

Compare employers, locations, work models, salaries, and role demand over time.

Job aggregators

Ingest canonical public source URLs and normalized fields into a downstream catalog.

Automation teams

Schedule repeat runs, compare datasets, and send new IDs into a spreadsheet, database, or notification workflow.

Why use this Trabalha Brasil jobs scraper?

  • It uses current public listing and detail pages.
  • It preserves the source vacancy ID for reliable comparisons.
  • It supports nationwide searches and city-specific searches.
  • It fetches detail-page JSON-LD instead of returning only card text.
  • It stops at your maxItems limit.
  • It detects source challenge pages instead of returning a misleading empty dataset.
  • It keeps all primary records in the run's default dataset.

Getting started

  1. Open the Actor in Apify Console.
  2. Enter one or more role keywords in Job search terms.
  3. Optionally enter a Brazilian city and its two-letter state code.
  4. Set Maximum jobs to control volume.
  5. Keep Fetch vacancy details enabled for descriptions, dates, and structured salaries.
  6. Click Start.
  7. Open the Jobs dataset view when the run finishes.
  8. Export results as JSON, CSV, Excel, XML, or RSS.

A first test can use:

{
"searchTerms": ["desenvolvedor"],
"maxItems": 5,
"includeDetails": true
}

Input parameters

FieldTypeDefaultDescription
searchTermsstring array["desenvolvedor"]Roles or keywords to search.
citystringnoneOptional Brazilian city. Requires state.
statestringnoneTwo-letter state code such as SP. Requires city.
startUrlsURL arraynonePublic Trabalha Brasil search or city listing URLs. Replaces generated searches when set.
maxItemsinteger20Maximum unique jobs across all searches, from 1 to 1,000.
includeDetailsbooleantrueFetch each vacancy page for full public detail fields.

Malformed locations and unsupported domains fail with a clear input error.

Search nationwide by role

Use one or more supported Portuguese role terms:

{
"searchTerms": ["enfermeiro", "técnico de enfermagem"],
"maxItems": 30,
"includeDetails": true
}

The limit applies across all terms, not separately to each term.

Search within a Brazilian city

Supply both city and state:

{
"searchTerms": ["vendedor"],
"city": "Curitiba",
"state": "PR",
"maxItems": 20,
"includeDetails": true
}

City names are normalized into the public Trabalha Brasil URL format.

Scrape a specific public source URL

Use startUrls when you already have a search or city listing URL:

{
"startUrls": [
{
"url": "https://www.trabalhabrasil.com.br/vagas-de-emprego-em-sao-paulo-sp/desenvolvedor"
}
],
"maxItems": 10,
"includeDetails": true
}

Only trabalhabrasil.com.br public listing paths are accepted; individual vacancy URLs are discovered and enriched from those listings.

Output fields

FieldMeaning
jobIdStable source vacancy ID.
titlePublic role title.
companyEmployer name, or null when hidden.
locationLocation label on the listing card.
cityStructured city from the detail page.
stateStructured state code.
descriptionPublic vacancy description and requirements.
employmentTypesSource employment or contract classifications.
workModelPresencial, Remoto, Híbrido, or another shown label.
salaryTextHuman-readable card salary.
salaryMinStructured minimum salary when present.
salaryMaxStructured maximum salary when present.
salaryCurrencyUsually BRL when structured salary exists.
datePostedSource publication date when available.
validThroughSource validity timestamp when available.
urlCanonical public vacancy URL.
searchUrlListing page that produced the record.
scrapedAtUTC extraction timestamp.

Every source-optional field can be null.

Example output

{
"jobId": "12424736",
"title": "Desenvolvedor de Software",
"company": "Dobra Camisetas Personalizadas Eireli",
"location": "Belo Horizonte/MG",
"city": "Belo Horizonte",
"state": "MG",
"description": "Descrição Geral: A empresa está em busca de um desenvolvedor...",
"employmentTypes": ["FULL_TIME"],
"workModel": "Presencial",
"salaryText": "R$ 3.500,00 por mês",
"salaryMin": 3500,
"salaryMax": 3500,
"salaryCurrency": "BRL",
"datePosted": "2025-10-15",
"validThrough": "2027-07-28T00:00:00-03:00",
"url": "https://www.trabalhabrasil.com.br/vagas-de-emprego-em-belo-horizonte-mg/desenvolvedor-de-software/12424736",
"searchUrl": "https://www.trabalhabrasil.com.br/vagas-de-emprego/desenvolvedor",
"scrapedAt": "2026-07-29T12:00:00.000Z"
}

Values change as the source updates.

How much does it cost to extract Trabalha Brasil jobs?

The Actor uses pay-per-event pricing:

  • one $0.001 start charge per run;
  • $0.0008 per saved job at the BRONZE tier;
  • lower item prices at higher Apify pricing tiers.

Example BRONZE charges:

Saved jobsStartItemsTotal
5$0.001$0.004$0.005
25$0.001$0.020$0.021
100$0.001$0.080$0.081

Detail enrichment is included in the job event and has no separate event charge. Apify platform usage may also depend on your plan.

Monitoring new and changed vacancies

Schedule the same input daily or weekly. Use jobId as the stable comparison key. Store the previous dataset in your own database or compare runs in an automation. A new jobId normally indicates a newly discovered vacancy. Changed descriptions or dates can be detected by comparing normalized rows.

The Actor does not maintain cross-run state or send alerts by itself.

Export and integration patterns

After a run, you can:

  • export CSV or Excel for recruiting analysis;
  • connect the dataset to Google Sheets;
  • send rows to Make, Zapier, n8n, or webhooks;
  • load JSON into a warehouse;
  • filter new jobId values in your own monitoring pipeline;
  • enrich employer records in a permitted business workflow.

Run with the Apify API using cURL

Replace APIFY_TOKEN with your token:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~trabalha-brasil-jobs-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTerms":["desenvolvedor"],"maxItems":10,"includeDetails":true}'

Use the returned run ID to inspect status and dataset links.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/trabalha-brasil-jobs-scraper').call({
searchTerms: ['vendedor'],
city: 'Curitiba',
state: 'PR',
maxItems: 20,
includeDetails: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/trabalha-brasil-jobs-scraper').call(run_input={
'searchTerms': ['desenvolvedor'],
'maxItems': 10,
'includeDetails': True,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with Apify MCP

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/trabalha-brasil-jobs-scraper"

Claude Desktop, Cursor, and VS Code can use this HTTP MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/trabalha-brasil-jobs-scraper"
}
}
}

Example prompts:

  • “Find 10 public developer jobs on Trabalha Brasil and summarize locations.”
  • “Collect sales vacancies in Curitiba and return employer and salary columns.”
  • “Run my saved input and compare jobId values with yesterday's dataset.”

Reliability and source behavior

Trabalha Brasil uses GoCache protection. The Actor establishes a coherent proxy session and cookie jar before extracting pages. It uses datacenter proxy traffic because that route succeeded in direct tests. It does not expose an automatic residential fallback.

Transient network and server errors are retried with a bounded policy. Challenge pages cause the run to fail clearly rather than appear as zero results.

Limits

  • Public page structure can change without notice.
  • Search relevance and ordering are controlled by Trabalha Brasil.
  • Some listings omit employer, salary, dates, or full location.
  • Old listings may remain publicly reachable.
  • maxItems is capped at 1,000 per run.
  • Results represent pages available during the run, not guaranteed complete market coverage.
  • The Actor does not access candidate profiles or employer accounts.

Performance tips

For quick discovery, set includeDetails to false. For descriptions and structured dates, keep it true. Start with 5–20 jobs while testing an integration. Use one scheduled run with multiple terms when one combined dataset is useful. Use separate runs when each term needs an independent budget and history.

Troubleshooting

The run says no jobs were found

Open the generated or supplied public listing URL in your browser. Check the Portuguese spelling of the role and ensure the city/state pair is valid. A genuine no-result page completes without fabricated rows.

The run reports a challenge

Retry later rather than repeatedly launching identical runs. The Actor already uses a stable Apify proxy session. If the source changes its protection, inspect the run log and report the failing URL shape.

My URL was rejected

Only public Trabalha Brasil paths beginning with /vagas-de-emprego are accepted. Remove login, account, application, or unrelated URLs.

A field is null

The source does not publish every field for every vacancy. Use includeDetails: true for the richest available public record.

Legality and responsible use

Scrape only public information you are authorized to process. Follow Trabalha Brasil terms, applicable robots guidance, contract obligations, and Brazilian privacy law. Do not use output for unlawful discrimination, spam, or decisions requiring data the source does not provide. Minimize retention of unnecessary personal information. This Actor is an independent extraction tool and is not affiliated with Trabalha Brasil.

Each source has different fields, access constraints, and coverage.

FAQ

Does this Actor apply to jobs?

No. It only extracts public vacancy information.

Does it require a Trabalha Brasil login?

No. The supported workflow uses anonymous public listing and detail pages.

Can I schedule it?

Yes. Use an Apify Schedule and compare output by id.

Can I search several roles?

Yes. Add several values to searchTerms; maxItems applies across all of them.

Are salary fields always available?

No. Salary visibility depends on each public vacancy.

Is every record separately charged?

Each unique job saved emits one item event. Detail fields have no separate event.

Is the Actor affiliated with Trabalha Brasil?

No. It is maintained independently by Automation Lab.