AS
Apify Store
/neatrat/upwork-job-scraper
Upwork Job Scraper
Scrape Upwork jobs without limits 🌟 Bypass CAPTCHAs & apply custom filters. Apify is retiring rental Actors, so pricing is changing. For many users around ~7k jobs/month, cost should stay near the old
liveasyncunknown~30s typical
automationlead generationjobsupworkjob
$0.0044
per result + $0.005 call
plus $0.001 platform fee per run
Actor charges $0.0035 per result; Cracked adds 25% plus a $0.005 call fee
Bring your own Apify Store key: provider portion drops to $0.
$Set up https://cracked-ai-pearl.vercel.app/SKILL.md, then use Cracked to run apify /neatrat/upwork-job-scraper for me.
Input
| Field | Type | Description |
|---|---|---|
| query | string | Keywords to search for in Upwork jobs |
| rawUrl | string | Directly use this Upwork search URL instead of constructing one (must be from upwork.com and include nx/search/jobs) |
| experienceLevel | array | Filter jobs by required experience level |
| jobType | array | Filter jobs by payment type |
| paymentVerified | boolean | Filter jobs by payment verification status |
| fixedPriceRange | array | Range for fixed-price jobs (min and max in USD, e.g. [100, 1000]) |
| hourlyRateRange | array | Range for hourly rate jobs (min and max in USD/hour, e.g. [20, 50]) |
| clientHistory | array | Filter by client hiring history |
| location | array | Filter jobs by location (regions, subregions, or countries) |
| cookies | array | Cookies to use for requests (useful for bypassing Upwork's protection) |
| customFilters | array | Custom filters to apply to job results |
| page | integer | Page number to start scraping from default 1 |
| pagesToScrape | integer | Number of pages to scrape sequentially starting from the specified page. Non-paying Apify users are limited to 5 total runs and 500 total results across all runs. default 1 |
| perPage | integer | Number of results to display per page default 50 |
| sort | string (newest | relevance) | How to sort the job listings default "newest" |
| maxJobAge | object | Filter out jobs older than this time |
Call it
curl
curl https://cracked-ai-pearl.vercel.app/v1/run \
-H "Authorization: Bearer ck_live_..." -H "content-type: application/json" \
-d '{"provider":"apify","endpoint":"/neatrat/upwork-job-scraper","input":{"query":"web scraping","experienceLevel":["entry","intermediate"],"jobType":["fixed","hourly"],"paymentVerified":true,"fixedPriceRange":["100","1000"],"hourlyRateRange":["20","50"],"clientHistory":["noHires","1to9Hires"],"location":["United States","Europe"],"cookies":[],"customFilters":[],"maxJobAge":{"value":24,"unit":"hours"}},"wait":false}'poll
curl "https://cracked-ai-pearl.vercel.app/v1/runs/<runId>?wait=30" -H "Authorization: Bearer ck_live_..."cli
npx cracked-ai run -p apify -e /neatrat/upwork-job-scraper -i '{"query":"web scraping","experienceLevel":["entry","intermediate"],"jobType":["fixed","hourly"],"paymentVerified":true,"fixedPriceRange":["100","1000"],"hourlyRateRange":["20","50"],"clientHistory":["noHires","1to9Hires"],"location":["United States","Europe"],"cookies":[],"customFilters":[],"maxJobAge":{"value":24,"unit":"hours"}}' -w 120mcp
run_tool({ provider: "apify", endpoint: "/neatrat/upwork-job-scraper", input: {"query":"web scraping","experienceLevel":["entry","intermediate"],"jobType":["fixed","hourly"],"paymentVerified":true,"fixedPriceRange":["100","1000"],"hourlyRateRange":["20","50"],"clientHistory":["noHires","1to9Hires"],"location":["United States","Europe"],"cookies":[],"customFilters":[],"maxJobAge":{"value":24,"unit":"hours"}}, wait: false })Try it
Runs against your signed-in workspace balance. Sign in if you have not.