We Work Remotely Jobs Scraper avatar

We Work Remotely Jobs Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
We Work Remotely Jobs Scraper

We Work Remotely Jobs Scraper

Scrape remote job listings from WeWorkRemotely.com with titles, companies, locations, salaries, full descriptions, and company profiles. HTTP-only, no login required.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(6)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

7

Bookmarked

1

Total users

0

Monthly active users

3 days ago

Last modified

Share

Scrape remote jobs from WeWorkRemotely.com — titles, companies, locations, salaries, full descriptions, and company profiles. HTTP-only; no login, no cookies, no proxy required.

Output (per job)

  • type = job_wwr
  • url, id, slug
  • title, company, companyLogo, companyLogoFull, companyHq
  • companyWebsite — company homepage / social URL (hiringOrganization.sameAs)
  • hiringOrganizationSameAs — full list when multiple sameAs entries are present
  • companyBio — about-the-company text block when the sidebar provides one
  • category, occupationalCategory (string or list per JSON-LD)
  • employmentType — raw schema.org value (e.g. FULL_TIME)
  • employmentTypeNormalized — lower-case hyphenated form (e.g. full-time, contract)
  • jobLocationTypeTELECOMMUTE / ONSITE
  • postedAt, applyBefore, validThrough
  • salary, salaryDetails (min / max / currency / unit)
  • salaryMin, salaryMax, salaryCurrency, salaryUnit — exposed at top level for easy filtering
  • applicantCountries, applicantLocationRequirements — parsed from applicantLocationRequirements[].name
  • directApply — JSON-LD boolean flag (Google structured-data hint)
  • skills — list extracted from Skills / Requirements bullet list when present
  • descriptionHtml, descriptionText (when includeDescription = true)
  • applyUrl
  • applicationCount — when the detail page shows "N applicants"
  • companyFoundedYear — when the company block shows a founded year
  • scrapedAt

If the listing / search returns zero results, a single job_wwr_blocked sentinel record is emitted so runs exit 0.

Input

FieldTypeDescription
categoryUrlsstring[]WWR category or search URLs. Prefill: https://weworkremotely.com/categories/remote-programming-jobs.
searchTermstringOptional keyword used when no categoryUrls are supplied (builds /remote-jobs/search?term=…).
maxItemsintegerMax jobs per run. Default 3.
includeDescriptionbooleanFetch each job's detail page for full description + company metadata. Default true.
cleanHtmlbooleanStrip scripts / tracking images from descriptionHtml. Default true.
regionsstring[]Optional region substrings (case-insensitive). Example: ["USA", "Europe"].
jobTypesstring[]Optional employment-type filter: full-time, contract, part-time.
minSalaryintegerMinimum salary in USD. Only applied when a listing has numeric salary data.

How it works

  1. Fetch each categoryUrls entry (or build a search URL from searchTerm).
  2. Extract /remote-jobs/<slug> links from the listing page.
  3. For each job, fetch the detail page and parse the embedded JobPosting JSON-LD schema (Google-compatible structured data). Fall back to DOM selectors where the schema lacks fields.
  4. Clean HTML: unescape entities, strip <script> and 1×1 tracking images when cleanHtml = true.

FAQ

Do I need a proxy? No. Why is the sentinel emitted? When the given URL / search has no matching jobs, we still emit one record so downstream pipelines never see an empty output.