# PeoplePerHour Freelance Job Scraper

> PeoplePerHour Freelance Job Scraper is a paid API for AI agents from api.scrapeforagents.tech, paid per call via x402, $0.08/call, status unknown (last checked 2026-10-02).

Searches and extracts structured freelance job listings from PeoplePerHour by keyword, returning job titles, budgets, descriptions, and project IDs.

## Facts

- Endpoint: POST https://api.scrapeforagents.tech/v1/peopleperhour?utm_source=zero.xyz
- Price: $0.08/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/peopleperhour-freelance-job-scraper-6dee1202
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__yT4VZnNu3enprG7K6rXG

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability peopleperhour-freelance-job-scraper-6dee1202 -d '<json body>'
```

Example prompt: Search PeoplePerHour for freelance jobs matching 'React developer' and 'Next.js developer', sorted by latest, and return up to 20 results per keyword so I can see what clients are currently posting and what budgets they're offering.

## When to prefer this

Use this endpoint when you need structured, machine-readable freelance job data from PeoplePerHour specifically — particularly for market research, lead generation, or opportunity monitoring across multiple keywords. Prefer it over general web scrapers because it returns a clean normalized schema with budget, currency, and project ID fields pre-extracted. Choose it over manual browsing when you need to aggregate listings across multiple search terms programmatically.

## Known failure modes

- Empty results returned if search terms yield no matching PeoplePerHour listings (not charged)
- PeoplePerHour website structure changes may break scraping and return nulls for all fields
- Rate limiting or blocking by PeoplePerHour may cause failed runs (not charged)
- Invalid enum value for sort parameter returns an error
- Overly broad queries may hit pagination limits returning incomplete data

## How this service works

Pay-per-call structured web data. Failed or empty runs are not charged.

## Output

Returns a JSON object with a count of matched jobs and an array of job items, each containing the job URL, title, budget, currency, project ID, description, budget bracket, and budget converted to a common currency. Failed or empty runs are not billed.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "sort": {
   "enum": [
    "relevant",
    "latest"
   ],
   "type": "string",
   "default": "relevant",
   "description": "Order shown in search results: relevance or newest first."
  },
  "queries": {
   "type": "array",
   "description": "Search terms to find public freelance jobs. Each term is searched separately."
  },
  "maxItems": {
   "type": "integer",
   "default": 0,
   "minimum": 0,
   "description": "Maximum unique jobs across all keywords. Set 0 for no overall cap."
  },
  "maxItemsPerQuery": {
   "type": "integer",
   "default": 30,
   "minimum": 0,
   "description": "Maximum unique jobs from each keyword. Set 0 to collect every available page."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "count": 1,
  "items": [
   {
    "url": null,
    "title": null,
    "budget": null,
    "currency": null,
    "projectId": null,
    "description": null,
    "budgetBracket": null,
    "budgetConverted": null
   }
  ],
  "product": "peopleperhour"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/peopleperhour-freelance-job-scraper-6dee1202/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.scrapeforagents.tech](https://www.zero.xyz/host/api.scrapeforagents.tech/llms.txt)
