ActorStack.dev

A LinkedIn job scraper for Latin America, without login

What LinkedIn's public job pages expose to a signed-out visitor in 18 Latin American countries, which filters it silently ignores, how often salary appears, and what LinkedIn says about crawling.

By Oswaldo Carabano8 min read

Short answer

A LinkedIn job scraper can read Latin American tech jobs without an account because LinkedIn serves job search and job pages to signed-out visitors. The LinkedIn LATAM Tech Jobs Scraper covers 18 countries and, on 639 jobs measured on 1 October 2026, returned the company website and domain on 97.6% and a tech stack on 99.4%, but a LinkedIn salary range on only 2.7%. Signed-out searches honour only keyword, location and date — workplace, seniority and job-type filters changed nothing in 13 of 13 tests — so the Actor applies them from each job page. LinkedIn's robots.txt disallows all paths for crawlers it has not named, and its User Agreement prohibits scraping.

Key points

  • LinkedIn serves job search and job pages to signed-out visitors, which is the only surface a LinkedIn job scraper without login can read.
  • LinkedIn ignored workplace type, experience level and job type for a signed-out visitor in 13 of 13 tested variants.
  • On 639 LinkedIn jobs across 8 Latin American countries, the company domain was filled on 97.6% and a published salary range on 2.7%.
  • One LinkedIn job search stops at 1,000 results, and a nonsense keyword still returns 10 jobs per page of padding.
  • LinkedIn's robots.txt, fetched on 10 October 2026, disallows every path for unnamed crawlers, and its User Agreement prohibits scraping.
On this page7 sections

LinkedIn serves job search and job pages to people who are not logged in. That signed-out surface is the only one a LinkedIn job scraper without an account can read, and for Latin American tech roles it turns out to be rich in company data, poor in salary data, and quietly selective about which filters it honours.

What a signed-out visitor can see

A signed-out visitor gets a paged search by keyword, location and posting date, and a job page per posting with the title, company, location, seniority, employment type, industries, applicant count, apply type and the full description. The LinkedIn LATAM Tech Jobs Scraper reads both for 18 Latin American countries plus the Latin America region, each mapped to the LinkedIn location id it uses; 8 to 10 of 10 jobs landed in the right country in the Actor's check, the rest being metro areas.

It never logs in: login, signup and personal profile paths are blocked in the code, and on a refusal it switches connection rather than interpreting a challenge.

Filters LinkedIn ignores

For a signed-out visitor, LinkedIn applies keyword, location and “posted within”. The workplace type, experience level and job type filters return exactly the same jobs as no filter — 13 of 13 tested variants were identical. A scraper that passes those parameters and reports success is delivering an unfiltered result labelled as a filtered one.

The Actor applies the three filters itself, from each job page. Seniority and employment type are on 100% of 639 measured job pages, so those filters are exact. Workplace type is stated on 64.5%, detected from the title, location and description, so with a workplace filter set, jobs that do not state one are skipped — and skipped jobs are never charged.

Padding and the 1,000 ceiling

When few jobs match, LinkedIn fills the search with unrelated ones: a nonsense keyword still returned 10 jobs per page. By default the Actor keeps a job only if its title or description contains every word of the keyword and it is a tech role, and treats a search as exhausted after 5 consecutive pages of nothing relevant instead of reading all the way down.

That bottom is 1,000 jobs per search, LinkedIn's own limit. Each keyword and country pair is its own search, and a run shares its row budget between them in turns, so going further means adding pairs rather than asking one search for more.

What arrives, measured

639 jobs on 1 October 2026: Brazil, Mexico, Argentina, Colombia, Chile, Peru, Uruguay and Costa Rica, about 80 each, across four searches — software engineer, data engineer, frontend developer and devops.

FieldFilledRange by country
Tech stack (at least one)99.4%—
Company website and domain97.6%—
Applicant count as a number65.9%—
Workplace type64.5%55.0% Brazil to 71.3% Peru, Costa Rica
Job poster10.2%5.0% Brazil to 21.3% Peru
Emails in the description6.7%2.5% Brazil, Colombia to 13.8% Costa Rica
LinkedIn salary range2.7%0% Brazil, Argentina to 7.5% Chile

Company profile fields — headquarters 97.0%, specialties 87.5%, founded year 70.8% — are rates within the 329 jobs whose company page was read, not within all 639. The domain needs no company page: it comes from the job page and ships at the job price.

Job posters and emails

The job poster — name, headline and profile link — is the one named person in the output, shown on 10.2% of jobs. For jobs located in the EU, EEA, UK or Switzerland the poster is always withheld. Company pages show employee names and photos on every page read; the parser does not read them.

The 45 emails found in descriptions were all corporate, 0 at personal providers. Personal-provider addresses are withheld by default and masked inside the description and company texts. The email pattern is DNS-only: in a test of 29 domains, 1 had published evidence and 28 were inferred at confidence 0.10, and only the evidenced one was charged.

What LinkedIn says about crawling

linkedin.com/robots.txt names dozens of crawlers individually and then closes with a group for everyone else: User-agent: *, Disallow: /. Its comment says that automated access without LinkedIn's express permission is prohibited, points to the User Agreement, and gives an address to apply for crawling permission. Even the named search-engine groups disallow /jobs-guest/. The User Agreement, read the same day, prohibits developing or using software, scripts or robots to scrape or copy the services.

The Actor reads public job pages regardless, and says so on its page. That is a different position from the one argued in reading robots.txt as a specification, and the difference is stated rather than blurred. Torre's /api/ paths are the other explicit disallow in this cluster — Torre's data and rules — and the cluster overview compares all five.

What a run costs

A job is $0.002 with the full page, website and domain, so 1,000 jobs are $2.00. Company profiles add $0.003 per distinct company per run; two 100-job runs on 2 October 2026 found 63 and 70 distinct companies, which puts 1,000 jobs with profiles at about $3.90 to $4.10. Across 42 runs and 4,039 requests none was blocked; 1.5% were rate-limited and retried, with no page lost.

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

Frequently asked questions

Does LinkedIn permit automated access to job pages?
Not without its express permission. LinkedIn's robots.txt says automated access requires that permission and gives an address to apply for it, and its User Agreement prohibits scraping. The LinkedIn LATAM Actor reads public job pages without that permission.
Why do LinkedIn salaries come back empty?
Because Latin American postings rarely publish one: 2.7% of 639 jobs carried a LinkedIn pay range, between 0% in Brazil and Argentina and 7.5% in Chile, and 3.0% mentioned a salary in the description text.
Does it read employee profiles?
No. Company pages show employee names and photos, and the parser does not read them. The job poster, shown on 10.2% of jobs, is the only named person, and is withheld for jobs located in the EU, EEA, UK or Switzerland.

Sources

Every URL below was requested and returned a page on the date shown.

  1. Site declarationchecked 10 Oct 2026
    linkedin.com/robots.txtLinkedIn
  2. Operator claimchecked 10 Oct 2026
    LinkedIn User AgreementLinkedIn
  3. Law or regulatorchecked 18 Aug 2026
    Art. 14 GDPR — Information to be provided where personal data have not been obtained from the data subjectRegulation (EU) 2016/679
  4. Operator claimchecked 10 Oct 2026
    LinkedIn LATAM Tech Jobs Scraper — Actor README and input schemaActorStack / Apify Store
A laptop screen showing a plain text-mode terminal with a command prompt.
Tech jobsGuide

Tech job postings dataset

Get on Board, Torre, LinkedIn, Hacker News and elempleo.com publish job postings in five different shapes. What each source gives you, what it leaves out, and what each one says about being read by a machine.

8 min
A laptop screen showing a plain text-mode terminal with a command prompt.
Tech jobsGuide

Scrape elempleo.com

elempleo.com caps every search at 10,000 results, hides some employers and publishes salaries as bands with a decimal comma. How each of those is handled, and what the site's robots.txt and terms say.

7 min
A laptop screen showing a plain text-mode terminal with a command prompt.
Tech jobsGuide

Get on Board API

Get on Board documents a public API that needs no key. What it returns, how it pages, and why its salary is a monthly USD conversion rather than the number the company posted.

7 min