LinkedIn LATAM Tech Jobs Scraper + Company Domain avatar

LinkedIn LATAM Tech Jobs Scraper + Company Domain

Pricing

from $2.00 / 1,000 jobs

Go to Apify Store
LinkedIn LATAM Tech Jobs Scraper + Company Domain

LinkedIn LATAM Tech Jobs Scraper + Company Domain

Scrape LinkedIn tech jobs in Brazil, Mexico, Argentina, Colombia, Chile and 13 more Latin American countries, without login or cookies. Each job comes with the company website and domain, extracted tech stack, remote/hybrid, English level, salary, job poster and optional email pattern.

Pricing

from $2.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Oswaldo Carabano

Oswaldo Carabano

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

22 days ago

Last modified

Share

Scrape LinkedIn tech jobs in Latin America — Brazil, Mexico, Argentina, Colombia, Chile, Peru, Uruguay, Costa Rica and 10 more countries — without a LinkedIn account or cookies. Every job comes with the hiring company's website and domain, the full job description, the tech stack extracted from it, remote / hybrid / on-site, English level, salary when published, the job poster when LinkedIn shows one, and an optional company email pattern (first.last@…) with mail server check.

Built for developers in Latin America looking for their next job, recruiters and staffing agencies mapping who is hiring, and sales teams selling to companies that are growing their engineering teams. A LinkedIn jobs API alternative focused on LATAM tech jobs: Brazil, Mexico, Argentina, Colombia, Chile and Peru, plus remote jobs open to Latin America.

What you get

One row per job (outputType: jobs, 117 fields across row types):

  • Job: title, LinkedIn job ID and URL, location, city, region, country, posted date, applicants, seniority level, employment type, industries, apply type (on LinkedIn or on the company site), full description as text and HTML.
  • Derived from the posting: tech stack (about 170 technologies: Python, React, AWS, Kubernetes, SQL, .NET…), role family (backend, frontend, data engineering, DevOps…), workplace type, English level, time zones, salary mentioned in the text, emails and links in the description, description language.
  • Company (always): website and domain — the key for outreach.
  • Company profile (includeCompanyDetails, on by default): industry, size range, employees on LinkedIn, followers, headquarters with full address, type, founded year, specialties, description, office locations, similar companies with their industry, affiliated pages (subsidiaries and brands), and the company's latest posts (date, text, reactions, comments) — a quick signal of how active the company is.
  • Email pattern (inferEmailPattern): most likely email format for the domain, confidence, evidence, MX check, email provider (Google Workspace, Microsoft 365…), and the job poster's likely email.

Or one row per hiring company (outputType: companies): the company profile with the open jobs this run found (titles, locations, countries, stack, latest posting date), the job posters, emails from its postings and the email pattern.

Measured fill rates

Measured on 1 Oct 2026 on 639 jobs from 8 countries (Brazil, Mexico, Argentina, Colombia, Chile, Peru, Uruguay, Costa Rica) × 4 role searches (software engineer, data engineer, frontend developer, devops). Company fields are measured on the 329 jobs whose company page was read in that sample.

FieldFilled
Title, company, location, country, posted date, description100%
Seniority level, employment type100%
Industries99.7%
Tech stack (at least one technology)99.4%
Apply type (company site 73.7%, LinkedIn 25.0%)98.7%
Company website and domain97.6%
Company industry, size, type, employees on LinkedIn99.7%
Company headquarters97.0%
Company specialties87.5%
Company founded year70.8%
Company latest posts (of 120 company pages)95.0%
Company affiliated pages (of 120 company pages)48.3%
Applicant count as a number65.9% (the rest say "Be among the first 25", kept as an upper bound)
Workplace type (remote / hybrid / on-site)64.5%
English mentioned / English level47.6% / 29.6%
Job poster (name, headline, profile)10.2%
Emails in the description6.7% (all corporate; 0 personal-provider emails)
Time zones mentioned5.3%
Salary mentioned in the description3.0%
Salary range published on LinkedIn2.7%

Rates differ by country (about 80 jobs each): job poster from 5.0% (Brazil) to 21.3% (Peru), emails in the description from 2.5% (Brazil, Colombia) to 13.8% (Costa Rica), workplace type from 55.0% (Brazil) to 71.3% (Peru, Costa Rica), LinkedIn salary range from 0% (Brazil, Argentina) to 7.5% (Chile). They are what LinkedIn publishes; the actor does not invent values — a field is null when the posting does not have it.

How fast

Measured on Apify on 2 Oct 2026 (512 MB, 3 parallel requests):

InputRowsRun timePeak memory
Default input {} (100 jobs)100 jobs + 63 company profiles163 s124 MB
2 keywords × 5 countries, 100 jobs100 jobs + 70 company profiles158 s140 MB
{"maxItems": 40} (6 runs, 2 of them at the same time)40 jobs + 26–27 company profiles47–73 s92–110 MB
Hiring companies, BR/MX/AR, email pattern, 20 (2 runs)19 companies26–30 s83–84 MB
React · Latin America · remote · email pattern, 3030 jobs + 22 company profiles57 s87 MB
Data engineer · MX/CO · past week · mid-senior · full-time, 1515 jobs (62 skipped by filters, not charged)68 s76 MB

Across our 42 runs on Apify (4,039 requests to LinkedIn) no request was blocked (0 × 403/999); 60 answers (1.5%) were rate limits (429) and 13 were network errors, all retried on a new connection, with no page lost. One LinkedIn search reaches at most 1,000 jobs (LinkedIn's own limit); add keywords or countries to go further.

Pricing

Pay per event — you pay for rows delivered, never for a page that failed or a job skipped by your filters:

EventPrice
Actor start$0.00001
Job (with the full job page, website and domain)$0.002
Company profile (once per company per run)$0.003
Email pattern with published evidence (once per domain per run)$0.01
Email pattern inferred without evidence (emailPatternInferred: true)free
No pattern found (emailPattern: null, e.g. a domain without mail servers)free

The email pattern is charged only when it is backed by emails the company published (emailPatternInferred: false and emailPatternEvidenceCount above 0). An inferred default pattern is still delivered, marked emailPatternInferred: true, and costs nothing; so does a domain where no pattern could be found (emailPattern: null).

Examples, measured on Apify, 2 Oct 2026 (rows and charged events read from each run, priced at the current prices):

RunChargedCost
Default input {} (100 jobs)100 jobs + 63 company profiles100 × $0.002 + 63 × $0.003 = $0.39
2 keywords × 5 countries, 100 jobs100 jobs + 70 company profiles100 × $0.002 + 70 × $0.003 = $0.41
40 jobs, includeCompanyDetails: false40 jobs$0.08
15 data engineer jobs, no company profiles15 jobs$0.03
30 remote React jobs with email patterns30 jobs + 22 profiles + 1 pattern with evidence (20 inferred, free)30 × $0.002 + 22 × $0.003 + 1 × $0.01 = $0.14
19 hiring companies with email patterns19 companies (11 inferred patterns and 6 domains without mail servers, free)19 × $0.003 = $0.06

Per 1,000 jobs: $2.00 without company profiles. Company profiles add $0.003 per distinct company: 63–70 distinct companies per 100 jobs in our runs, so about $3.90–4.10 per 1,000 jobs with company profiles at that rate. Duplicates are never charged within a run, and a run never goes over your maximum cost per run (tested on Apify: a 200-job run with a $0.50 limit stopped cleanly below it).

Input example

The input of one of our test runs on Apify (2 Oct 2026: 30 jobs in 57 s, $0.14 at the current prices):

{
"outputType": "jobs",
"keywords": ["react"],
"countries": ["LATAM"],
"workplaceTypes": ["remote"],
"inferEmailPattern": true,
"maxItems": 30
}

Run it with an empty input {} and it returns 100 software engineer jobs from Brazil, Mexico, Argentina, Colombia and Chile posted in the last month, with company profiles.

Output example

A real row from that run (shortened to 39 of its fields):

{
"jobId": "4443434628",
"jobUrl": "https://www.linkedin.com/jobs/view/4443434628/",
"title": "Staff Frontend Software Engineer",
"companyName": "Tractian",
"location": "São Paulo, São Paulo, Brazil",
"country": "Brazil",
"countryCode": "BR",
"postedDate": "2026-09-26",
"applicantsText": "Over 200 applicants",
"applicants": 200,
"seniority": "Not Applicable",
"employmentType": "Full-time",
"industries": [
"Software Development"
],
"roleCategory": "frontend",
"workplaceType": "remote",
"workplaceTypeSource": "description",
"latamEligible": true,
"latamEligibleReason": "located-in-latam",
"englishMentioned": true,
"englishLevel": "fluent",
"stack": [
"React"
],
"descriptionLanguage": "en",
"applyType": "external",
"website": "http://www.tractian.com",
"domain": "tractian.com",
"companyIndustry": "Software Development",
"companySize": "501-1,000 employees",
"companyEmployeesOnLinkedin": 881,
"companyFollowers": 176111,
"companyHeadquarters": "Atlanta, Georgia",
"companyType": "Privately Held",
"companyFounded": 2019,
"emailPattern": "first.last",
"emailPatternConfidence": 0.1,
"emailPatternInferred": true,
"mxValid": true,
"emailProvider": "Google Workspace",
"catchAll": null,
"scrapedAt": "2026-10-02T14:16:14.790Z"
}

About the email pattern — read this

  • The pattern is learned from emails and names that companies publish in their job postings. LinkedIn postings rarely contain emails (6.7% measured), so most patterns are an inferred default with low confidence: in a test run of 29 domains, 1 had published evidence and 28 were inferred at confidence 0.10. emailPatternInferred: true tells you which ones — and those are not charged (only patterns with published evidence are).
  • What is always measured: whether the domain has mail servers (MX, DNS only) and which email provider it uses — 29 of 29 domains in that run.
  • The actor never sends an email and never probes a mailbox (no SMTP). That is why catchAll is always null.

Filters LinkedIn ignores, applied by the actor

For visitors without an account, LinkedIn only applies the keyword, the location and "posted within". We checked: the workplace type, experience level and job type filters return exactly the same jobs (13 of 13 variants). So this actor applies workplace type, experience level and employment type itself, from each job page. LinkedIn also fills searches with unrelated jobs when few match (a nonsense keyword still returns 10 jobs per page), so by default a job is kept only if it mentions your keyword (requireKeywordMatch) and is a tech role (techOnly). When 5 pages in a row bring nothing relevant, the search is treated as exhausted instead of reading all 1,000 unrelated jobs. Skipped jobs are never charged; the run summary counts them by reason.

FAQ

Do I need a LinkedIn account or cookies? No. The actor reads the public job pages LinkedIn shows to visitors. It never logs in.

Which countries? Brazil, Mexico, Argentina, Colombia, Chile, Peru, Uruguay, Costa Rica, Ecuador, Guatemala, Panama, Dominican Republic, Bolivia, Paraguay, Venezuela, El Salvador, Honduras, Nicaragua, plus "Latin America" as a whole region. Each country uses the LinkedIn location ID we verified (8–10 of 10 jobs in the right country; the rest are metro areas like "Greater Curitiba").

Are remote jobs for Latin America included? Yes. Use workplaceTypes: ["remote"]. Workplace type is detected from the title, location and description (64.5% of jobs state it).

Why is the salary empty so often? Few Latin American postings publish one: 2.7% have a LinkedIn pay range and 3.0% mention a salary in the text. The text salary is only read next to a salary word, so insurance amounts or funding rounds are not mistaken for salaries.

What about personal data? Corporate emails published in postings are included. Emails at personal providers (Gmail, Outlook, Hotmail…) are withheld unless you turn on includePersonalEmails — in the email lists and also inside the description and company texts, where they are replaced by [email withheld]. Job posters are included as LinkedIn shows them publicly, except for jobs located in the EU, EEA, UK or Switzerland, where they are always withheld. Names and photos of a company's employees are never read.

What happens if LinkedIn limits requests? The actor paces itself at about one request per second per connection (the pace we measured to stay clear of rate limits), switches connection on a refusal and pauses when refusals pile up. Pages that still cannot be read are listed in the ERRORS record and never charged.

What happens when my maximum cost per run is reached? The run stops cleanly. No row is delivered without being charged.

How much does it cost to scrape 1,000 LinkedIn jobs? $2.00 for the jobs ($0.002 each, with full description, stack, website and domain). Company profiles are optional and add $0.003 per distinct company: with 63–70 distinct companies per 100 jobs (measured on Apify, 2 Oct 2026), about $3.90–4.10 per 1,000 jobs with profiles.

Does it work from Apify's servers? Yes. All the figures on this page were measured on Apify, including two runs started at the same time (each run uses its own connections).

Can I get more than 1,000 jobs? One LinkedIn search stops at 1,000. Add more keywords or countries: each keyword × country is its own search, and the budget is shared between them in turns.

Run outputs

  • Dataset: one row per job (or per company). Views: Jobs, Outreach, Salary, Hiring companies, Errors.
  • RUN_SUMMARY: rows delivered and charged, jobs skipped by reason, network summary.
  • ERRORS: pages that could not be read (always written, empty when all went well).