PeoplePerHour Scraper
Pricing
from $3.00 / 1,000 results
PeoplePerHour Scraper
[π° $3.0 / 1K] Extract freelance project and job postings from PeoplePerHour. Search by keyword, browse a category, or paste URLs, then filter by price type, experience level, and remote work. Get titles, budgets, currencies, categories, skills, posting dates, proposal counts, and client details.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Pull live freelance project and job postings from PeoplePerHour at scale β titles, budgets in native currency, fixed vs hourly pricing, required skills, proposal counts, posting and expiry dates, and the hiring client's name and country. Built for agencies, lead-generation teams, and market researchers who need fresh freelance-demand data without manually clicking through marketplace listings page by page.
Why This Scraper?
- 10 top-level categories, browseable by name β Artificial Intelligence, Technology & Programming, Design, Digital Marketing, Writing & Translation, Social Media, Marketing/Branding/Sales, Video & Photography, Music & Audio, and Business. Pick one from a dropdown; no URL crafting.
- Per-project native currency β GBP, USD, or EUR β every budget keeps the currency the client actually posted in, not a converted home-IP estimate that distorts your pricing analysis.
- Structured budget ranges β separate
budgetMinandbudgetMaxfields whenever a project advertises a range, plus a single headlinebudgetfigure. - Fixed vs Per-hour pricing filter β limit a run to fixed-price projects or hourly contracts to match exactly the work model you sell.
- Entry / Intermediate / Expert experience filter β target only the seniority tier you compete in and skip the rest.
- Proposal (bid) counts on every project β
proposalCounttells you how saturated each lead is before you spend time on a pitch. - Full project brief on every row, plus skills tags when available β every row carries the complete project description, not just a truncated teaser; when a project's detail page is reachable we add the client's required-skills list on top.
- Hiring-client details on every row β client name and country, so you know who is posting and where they're based.
- Deduplicated by project ID β each project is returned once even when it surfaces across several keywords or pages, so your lead list has no repeats.
Use Cases
Lead Generation for Agencies & Freelancers
- Build a daily feed of open projects matching your service keywords
- Prioritise leads by proposal count to find low-competition projects
- Filter to Expert-level briefs that match premium service offerings
- Pull client name and country to qualify and personalise outreach
Market & Demand Research
- Measure how many projects are posted per category over time
- Track which skills clients are requesting most across a category
- Spot emerging demand in the dedicated Artificial Intelligence category
- Map remote-only versus on-site demand for a given skill set
Competitive Pricing Intelligence
- Benchmark fixed-price budgets against hourly rates in your niche
- Compare native-currency budgets (GBP/USD/EUR) across regions
- Track budget ranges by experience level to position your quotes
- Identify under-priced versus premium project segments
Talent Sourcing & Recruiting
- Find the categories and skills with the highest open-project volume
- Gauge market rates before posting your own briefs
- Monitor client countries to understand where work originates
- Track posting and expiry dates to time outreach around fresh demand
Getting Started
Simple Keyword Search
Search a single keyword and collect the latest matching projects:
{"searchQueries": ["wordpress"],"maxResults": 100}
Browse a Category
Collect every open project in one category, sorted by most recent:
{"category": "design","sortBy": "recent","maxResults": 200}
Full Filtered Run
Combine a keyword with pricing, experience, and remote filters:
{"searchQueries": ["logo design", "brand identity"],"category": "design","priceType": "fixed","experienceLevel": "expert","remoteOnly": true,"sortBy": "recent","maxResults": 0,"includeDescription": true}
Using PeoplePerHour URLs
Paste freelance-jobs URLs to scrape them exactly as shown on the site, including any filters baked into the link:
{"startUrls": ["https://www.peopleperhour.com/freelance-jobs/technology-programming","https://www.peopleperhour.com/freelance-jobs/design"],"maxResults": 150}
Input Reference
Search & Targeting
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["wordpress"] | Keywords or phrases to search for, such as "wordpress", "logo design", or "data entry". Each keyword runs its own search. Up to 50 keywords per run. Leave empty to use the category or collect the broadest project feed. |
category | select | Any category | Browse a single category: Artificial Intelligence, Technology & Programming, Writing & Translation, Design, Digital Marketing, Social Media, Marketing/Branding/Sales, Video & Photography, Music & Audio, or Business. |
startUrls | string[] | [] | Paste full PeoplePerHour freelance-jobs URLs (a category page or a filtered search page) to scrape them exactly as shown. Filters baked into the URL are respected. Up to 50 URLs per run. |
Filters & Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
priceType | select | Any price type | Limit results to one pricing model: Fixed price or Per hour. |
experienceLevel | select | Any experience level | Only return projects asking for this seniority: Entry, Intermediate, or Expert. |
remoteOnly | boolean | false | Only return projects that can be done remotely. |
sortBy | select | Most recent | Order results by Most recent (newest postings first) or Most relevant (best match to your search). |
maxResults | integer | 100 | Maximum projects to collect per keyword, category, or start URL. Set to 0 to collect everything available. |
Output Options
| Parameter | Type | Default | Description |
|---|---|---|---|
onlyUniqueProjects | boolean | true | Return each project once even if it appears across several pages or searches. Deduplicates by project ID. |
includeDescription | boolean | true | Include the full project description for each project, plus skills tags when they can be read. Turn off for lighter, faster records when you only need titles, budgets, categories, dates, and links. |
Output
Each project posting is returned as one flat row. Here is a representative result with full descriptions enabled (the skills array shows a row whose detail page was reachable; see the field note below):
{"projectId": "4239871","title": "Build a custom WordPress plugin for booking management","url": "https://www.peopleperhour.com/freelance-jobs/technology-programming/wordpress/build-a-custom-wordpress-plugin-4239871","description": "We need an experienced WordPress developer to build a booking management plugin with calendar sync, payment capture, and an admin dashboard...","descriptionHtml": "<p>We need an experienced WordPress developer to build a booking management plugin...</p>","budget": 800,"budgetMin": 800,"budgetMax": 1200,"currency": "GBP","priceType": "fixed","category": "Technology & Programming","subCategory": "WordPress","skills": ["WordPress", "PHP", "Plugin Development", "JavaScript"],"postedDate": "2026-06-18T09:14:22","expiryDate": "2026-07-18T09:14:22","duration": "1 to 3 months","locationType": "Remote","experienceLevel": "Expert","proposalCount": 7,"isUrgent": false,"isFeatured": false,"clientName": "Sarah M.","clientCountry": "United Kingdom","clientUrl": "https://www.peopleperhour.com/freelancer/sarah-m","searchQuery": "wordpress","scrapedAt": "2026-06-19T12:00:00Z"}
Core Fields
| Field | Type | Description |
|---|---|---|
projectId | string | Unique PeoplePerHour project identifier (used for deduplication) |
title | string | Project title as posted by the client |
url | string | Direct link to the project page |
description | string | Full project brief as plain text |
descriptionHtml | string | Full project brief with original HTML formatting |
Budget & Pricing
| Field | Type | Description |
|---|---|---|
budget | number | Headline budget amount |
budgetMin | number | Lower bound when the project advertises a range |
budgetMax | number | Upper bound when the project advertises a range |
currency | string | Native currency the client posted in (GBP, USD, EUR) |
priceType | string | Pricing model: fixed or hourly |
Classification
| Field | Type | Description |
|---|---|---|
category | string | Top-level category name |
subCategory | string | Sub-category name when present |
skills | string[] | Required skills tags β included when available (added from a project's detail page when it can be read) |
experienceLevel | string | Seniority tier β Entry, Intermediate, or Expert β inferred from the project's budget tier |
locationType | string | Remote or On-site |
duration | string | Estimated project duration when provided |
Client & Status
| Field | Type | Description |
|---|---|---|
clientName | string | Public name of the hiring client |
clientCountry | string | Country the client is based in |
clientUrl | string | Link to the client's profile |
proposalCount | number | Number of bids the project has received |
isUrgent | boolean | Whether the project is flagged urgent |
isFeatured | boolean | Whether the project is featured/promoted |
Meta
| Field | Type | Description |
|---|---|---|
postedDate | string | When the project was posted (ISO-style timestamp) |
expiryDate | string | When the project listing expires |
postedRelative | string | Relative posting time when the site provides one |
searchQuery | string | The keyword that surfaced this project |
scrapedAt | string | ISO timestamp of data collection |
Tips for Best Results
- Leave
maxResultsat 0 to capture an entire category's open demand β perfect for a full snapshot of what clients are hiring for right now in your niche. - Use Most recent sort for outreach β fresh postings are where new leads live; the most recent projects have the fewest existing proposals.
- Watch
proposalCountto find low-competition leads β a project with 0-3 proposals is far easier to win than one with 30, so sort your output by this field before pitching. - Turn off descriptions for fast volume runs β when you only need titles, budgets, categories, and links for market sizing, switching off full descriptions makes runs lighter and quicker.
- Combine a keyword with a category to tighten results to exactly the segment you serve, instead of scanning a broad keyword across every category.
- Compare native currencies, not converted estimates β because every budget keeps its original GBP/USD/EUR, you can benchmark true regional rates without conversion drift.
- Run several keywords in one job β list every service variant you offer in
searchQueries; deduplication keeps the merged lead list clean.
Pricing
From $3.00 per 1,000 results β undercuts comparable PeoplePerHour data tools while returning structured budgets, skills, proposal counts, and client details. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.36 | $0.34 | $0.32 | $0.30 |
| 1,000 | $3.60 | $3.40 | $3.20 | $3.00 |
| 10,000 | $36.00 | $34.00 | $32.00 | $30.00 |
| 100,000 | $360.00 | $340.00 | $320.00 | $300.00 |
A "result" is any project row in the output dataset. There are no compute or time-based charges β you pay per result, plus a small fixed per-run start fee.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n β Workflow automation
- Google Sheets β Direct spreadsheet export
- Slack / Email β Notifications on new results
- Webhooks β Trigger custom APIs on run completion
- Apify API β Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate market research, lead generation, and competitive analysis of publicly listed freelance projects. Users are responsible for complying with applicable laws and PeoplePerHour's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose, and handle any personal data in line with relevant privacy regulations.