How to Export We Work Remotely Jobs by Category
“Remote” can mean worldwide, a particular country, or a set of permitted regions. A useful job list starts by checking where you can work, not simply by collecting every remote title.
The We Work Remotely Scraper returns job cards from supplied pages, including company links and category labels that can contain geographic restrictions. I maintain it. This guide builds a frontend-job list with an explicit eligibility review.

Check the start charge before a trial
The Actor runs on Apify and requires a searchUrls array. Its schema does not expose a result cap, keyword field, or detail-enrichment option. Use one category URL to keep the initial scope understandable.
Pricing as of September 6, 2026: results cost $0.002 each, and Actor start costs $0.50 per GB of allocated memory, with at least one start event. The start charge is material for a small sample. At a one-event start, twenty results would cost $0.54: $0.50 plus $0.04 in row fees. More allocated memory increases the start charge. Check the live pricing page and run memory setting before starting.
Collect one frontend category
Open Input in JSON view:
{
"searchUrls": [
"https://weworkremotely.com/categories/remote-front-end-programming-jobs#job-listings"
]
}
Click Start, then open the dataset after completion. Verify that jobLink points to the expected jobs. The category name is a discovery context, not a guarantee that every posting matches your preferred stack or seniority.
The Actor returns listing cards, not full job descriptions. Keep your initial objective narrow: find relevant postings and decide which source pages warrant a careful read.
Read the location labels correctly
One historical README sample has jobLocation: "San Francisco", but its categories include regional labels such as Europe Only, UK Only, and Latin America Only. Another says jobLocation: "Virtual" and includes Anywhere in the World.
{
"jobTitle": "Software Design Engineer",
"companyName": "Elite Software Automation",
"jobLocation": "Virtual",
"categories": [
"Featured",
"Full-Time",
"$75,000 - $99,999 USD",
"Anywhere in the World"
]
}
The categories mix promotion, employment type, compensation, and geography. They are not a single industry classification. A company city is also not necessarily the required employee location. Preserve the full array and check its geographic labels before rejecting or accepting a role.

Earlier job cards show why geographic category labels need to be read with the location field.
Create an eligibility-first application list
Export JSON to preserve categories, or CSV with the categories retained in a readable column. Keep jobTitle, companyName, jobLocation, jobLink, companyLink, and postedTimeAgo. Add a collection timestamp yourself because the documented output has no scrape-timestamp field.
Deduplicate by jobLink, then add three review columns: permitted location, employment arrangement, and requirements checked. Read geographic labels into the first column without deleting the original categories. Mark conflicts or unclear regional combinations for source review.
Open eligible-looking jobs and verify residency rules, time-zone overlap, work authorization, and whether the arrangement is employment or contracting. Add those requirements only when the posting states them. A “worldwide” label is a reason to investigate, not a guarantee that every applicant is eligible.
For the historical salary label above, preserve USD and the stated range. Do not assume a pay period if it is not present in the card. Confirm it in the full posting before comparing annual compensation with another job.
Group the remaining list by company using companyLink, while retaining distinct job links. You now have an application queue with checked constraints, rather than a raw remote-job dump.
Repeat collection without confusing reposts
Save the category input as a task when the result is useful. On subsequent exports, compare job links and keep your first-seen date. postedTimeAgo is relative source text; “4d” is not an exact timestamp and should be interpreted alongside the collection date.
A role missing from a category sample may have moved or expired, so open the link before marking it closed. If results are empty, verify the category URL and inspect the run log. Increasing an unsupported limit field will not fix the input.
For another job-board sample with different filters, see the Dice guide or ZipRecruiter guide. Keep their location and salary semantics separate when combining records.
The Node.js example shows how to run this Actor from code and retrieve its dataset.
Frequently asked questions
Does remote mean I can apply from any country?
No. Inspect geographic labels in categories and verify residency, time-zone, and work-authorization requirements on the linked job page.
Why can a small run cost more than its result fees?
The active pricing includes a $0.50 Actor-start event per GB of allocated memory, with at least one event, in addition to $0.002 per returned result.
