Skip to content

PeoplePerHour Job Scraper

Try for free

Search PeoplePerHour freelance jobs by keyword, category or link, or paste job links. Get title, full description, budget in the original currency and USD, experience level, proposal count, posting and expiry dates, location and client details. No login needed.

💼 PeoplePerHour Job Scraper

Export freelance jobs from PeoplePerHour in seconds: title, full description, budget in the client's currency and in US dollars, experience level, proposal count, posting and expiry dates, location and client details. Search by keyword, filter by category, pricing, experience, budget and age, or paste PeoplePerHour links. No login, no browser, and you pay only for the jobs you get.

✨ Why use PeoplePerHour Job Scraper?

  • ⚡ Fast — reads the same job data the site's own pages load, 50 jobs per request; 20 jobs arrive in under 10 seconds and 1,000 in about 11 seconds in our test runs.
  • 🔎 Keyword search that works — every keyword is its own search on the site, and each row says which keyword found it.
  • 💵 Budgets you can compare — the budget in the client's currency (GBP, USD, EUR...) plus the site's own US dollar conversion.
  • 📝 Full job details — the complete description, pricing type, experience level, proposal count, attachments, status and expiry date.
  • 👤 Client details — client name as the site shows it, profile link, city, country, member-since date and verification badge.
  • 🔓 No login needed — only public data, nothing to set up.

🎯 Use cases

  • 🔔 Job alerts — schedule a run every hour for "posted within 1 day, at most 5 proposals" in your niche and send new jobs to Slack or email.
  • 🏢 Agency prospecting — find UK and international clients who post work you can deliver (WordPress, logo design, SEO, video editing).
  • 📊 Market and pricing research — compare budgets by category, sub-category, experience level and currency.
  • 📈 Demand tracking — include closed jobs to see how many jobs each category gets over time and what they paid.
  • 🧪 Competition analysis — see how many proposals jobs attract and which ones still have none.

🚀 How to use

  1. Enter one or more Search keywords (e.g. wordpress, logo design), or paste PeoplePerHour links (job search or category pages like peopleperhour.com/freelance-jobs/technology-programming, or single job pages).
  2. Set Max jobs per search (20 by default; 0 = everything the site lists).
  3. Optionally narrow it down with the Filters: category, fixed or hourly, experience level, USD budget range, max proposals, posted within N days, remote only, urgent, pre-funded, opportunity, no proposals yet, and closed jobs.
  4. Click Start, then download the results as JSON, CSV, Excel or HTML, or read them through the API.

Leave the keywords empty and pick a category or another filter to get every job that matches it.

📥 Input

FieldWhat it does
queriesSearch keywords; each one is its own search
startUrlsJob search / category links and single job links
maxItemsJobs per keyword or link (default 20, 0 = all the site lists)
categoryOne of the site's 10 job categories
projectTypeall, fixed_price or hourly
experienceLevelsAny of entry, intermediate, expert
minBudget / maxBudgetBudget range in US dollars (hourly rate for hourly jobs)
maxProposalsJobs with at most this many proposals
postedWithinDaysOnly jobs posted in the last N days
remoteOnly, urgentOnly, preFundedOnly, opportunityOnly, noProposalsOnlyThe site's job filters
includeClosedJobsAlso return in-progress, completed and expired jobs
sortBynewest, relevance, budget, ending, popularity
{
  "queries": ["wordpress", "shopify"],
  "maxItems": 50,
  "projectType": "fixed_price",
  "experienceLevels": ["intermediate", "expert"],
  "minBudget": 200,
  "maxProposals": 10,
  "postedWithinDays": 3,
  "sortBy": "newest"
}

📤 Output

One row per job.

FieldDescription
project_id, title, urlJob id, title and link
descriptionFull job description
budget, currencyBudget in the client's currency (hourly rate for hourly jobs)
budget_converted, budget_converted_currencyBudget converted to US dollars by the site
project_typefixed_price or hourly
budget_bracket, experience_level1 Entry, 2 Intermediate, 3 Expert
category, category_slug, sub_category, sub_category_slugWhere the job is listed
posted_date, expiry_dateAs the site shows them (YYYY-MM-DD HH:MM:SS)
status, is_openopen, in_progress, completed, expired...
location_type, remote_country, onsite_locationRemote, remote limited to one country, or on-site with its city
proposal_countProposals sent so far
is_urgent, is_featured, is_prefunded, is_opportunity, is_ndaThe site's job badges
attachmentsFile names the client attached
client_id, client_name, client_public_name, client_urlClient as the site shows them, with profile link
client_city, client_country, client_country_code, client_registered, client_photo, client_verifiedClient location, member-since date, photo and verification badge
query, source_url, scraped_atWhere the row came from and when

Example from a test run (trimmed; client details replaced with fictional ones):

{
  "project_id": 4527601,
  "title": "WordPress Developer – 6-Page Bilingual Corporate Website",
  "url": "https://www.peopleperhour.com/freelance-jobs/technology-programming/website-development/wordpress-developer-6-page-bilingual-corporate-website-4527601",
  "description": "We require an experienced WordPress developer to create a professional, bilingual website for a property and land development business…",
  "budget": 275,
  "currency": "GBP",
  "budget_converted": 369.09,
  "budget_converted_currency": "USD",
  "project_type": "fixed_price",
  "budget_bracket": 3,
  "experience_level": "Expert",
  "category": "Technology & Programming",
  "sub_category": "Website Development",
  "posted_date": "2026-10-20 15:35:23",
  "expiry_date": "2026-11-19 15:35:23",
  "status": "open",
  "is_open": true,
  "location_type": "remote",
  "proposal_count": 97,
  "is_urgent": false,
  "is_prefunded": false,
  "is_opportunity": true,
  "attachments": [],
  "client_id": 10000001,
  "client_name": "Laura M.",
  "client_url": "https://www.peopleperhour.com/freelancer/laura-m-example",
  "client_city": "Crawley",
  "client_country": "United Kingdom",
  "client_country_code": "GB",
  "client_registered": "2019-11-20",
  "client_verified": false,
  "query": "wordpress",
  "scraped_at": "2026-10-21T20:28:40Z"
}

💰 Pricing

  • $3.00 per 1,000 jobs ($0.003 per job). No start fee.
  • Platform usage (compute and proxy traffic) is billed on top and is tiny for this actor: under one cent for 1,000 jobs in our test runs.
  • Example: 1,000 jobs ≈ $3.01 in total; the default 20 jobs ≈ $0.06.

❓ FAQ

Is it legal to scrape PeoplePerHour? The actor reads only public job listings that anyone can see without an account. You are responsible for how you use the data; check the site's terms and your local laws, especially for personal data.

Do I need a PeoplePerHour account or a proxy? No login. The default datacenter proxy works; if the site ever refuses it, the run switches to UK residential exits by itself.

How many jobs can I get? As many as the site lists for your search: usually several hundred open jobs in total, and up to 10,000 per search with closed jobs included. Set maxItems to 0 for everything.

Why is a field empty? Fields appear only when the job has them: remote_country only for jobs limited to one country, onsite_location only for on-site jobs, client_photo only when the client uploaded one, and query only for keyword searches.

What does the keyword search match? The site's own search, which also matches related words in titles and descriptions. Use the filters, or sortBy: relevance, for tighter results.

Can I schedule it or use the API? Yes. Schedule runs (e.g. hourly with postedWithinDays: 1) and fetch results through the API or integrations. Each job is saved once per run, even when several keywords find it.

⚠️ Limits

  • The site serves at most 10,000 jobs per search (200 pages of 50); narrow the search (keyword, category, filters) to reach more.
  • Freelancer profiles, hourlies (fixed-price services) and proposals are not collected; this actor returns jobs.
  • Client names are what the site shows publicly (usually first name and last initial); no emails or phone numbers.
  • posted_date and expiry_date are given as the site shows them, without a time zone.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.