# Hirescrape

> Pay-per-call web scrapers for AI agents. 29 tools across social media, job boards, ad libraries, reviews, and multi-platform trend research. MPP (USDC on Tempo) is live today; x402 on Base and Solana are next after further live testing.

Agents hit `POST /api/tools/{tool}` with a JSON body and get clean scraped data back. Unauthenticated requests return HTTP 402 with a `WWW-Authenticate: Payment ...` MPP challenge. The client's wallet signs, retries with an `Authorization: Payment ...` credential, and receives the dataset plus a `Payment-Receipt` header carrying a base64url-encoded receipt for on-chain verification. x402 infrastructure is wired and passing spec checks, but disabled at the edge until Base + Solana settlement has more hours of production soak time.

All paid endpoints are declared in the OpenAPI manifest at https://hirescrape.com/openapi.json with `x-payment-info` annotations on each operation (price mode, currency, accepted protocols). Pricing is dynamic — the 402 body carries the exact quote for your input. Typical call costs are a fraction of a cent to about half a dollar. Failed requests do not settle; you only pay for 2xx responses.

The whole runtime is spec-compliant with the IETF `Payment` HTTP auth scheme at paymentauth.org and the discovery conventions at mpp.dev. That means error bodies are RFC 9457 Problem Details (`application/problem+json`), 402s include `Cache-Control: no-store`, 2xx responses include a spec-named `Payment-Receipt` header alongside the legacy `X-PAYMENT-RESPONSE`, and the server honors `Accept-Payment` to filter advertised protocols by client preference.

## Tools

- [Reddit Deep Scraper](https://hirescrape.com/api/tools/reddit): Scrape Reddit posts, comments, AI Answers, subreddits, and search. TLS fingerprinting, no API key. $0.02–$0.52 per call.
- [Multi Job Board Scraper](https://hirescrape.com/api/tools/jobs): Scrape jobs from LinkedIn, Indeed, Glassdoor, Google Jobs, ZipRecruiter, Bayt, BDJobs, and Naukri in one call. $0.05–$1.65 per call.
- [TikTok · Douyin · Bilibili Scraper](https://hirescrape.com/api/tools/tiktok): Videos, profiles, comments, likes, live rooms, trending across all three platforms. $0.02–$1.02 per call.
- [30Days Trend Intel](https://hirescrape.com/api/tools/trend-intel): Research a topic across Reddit, TikTok, YouTube, Instagram, HN, Polymarket. Ranked + clustered. $0.15–$0.35 per call.
- [Instagram Scraper](https://hirescrape.com/api/tools/instagram): Instagram profiles, posts, reels, comments, highlights, transcripts, reel search. $0.05–$2.00 per call.
- [YouTube Scraper](https://hirescrape.com/api/tools/youtube): YouTube channels, videos, shorts, transcripts, comments, keyword + hashtag search, playlists, community posts. $0.05–$2.00 per call.
- [LinkedIn Scraper](https://hirescrape.com/api/tools/linkedin): LinkedIn person profiles, company pages, paginated company posts, individual post details. $0.05–$2.00 per call.
- [Facebook Scraper](https://hirescrape.com/api/tools/facebook): Facebook profiles, posts, photos, reels, group posts, comments, transcripts. $0.05–$2.00 per call.
- [X / Twitter Scraper](https://hirescrape.com/api/tools/twitter): X (Twitter) profiles, user tweets, tweet details + transcripts, community metadata and tweets. $0.05–$2.00 per call.
- [Threads Scraper](https://hirescrape.com/api/tools/threads): Meta Threads profiles, user posts, post details, keyword + user search (with date filters). $0.05–$2.00 per call.
- [Bluesky Scraper](https://hirescrape.com/api/tools/bluesky): Bluesky profiles, user posts, individual post details. $0.05–$2.00 per call.
- [Pinterest Scraper](https://hirescrape.com/api/tools/pinterest): Pinterest keyword search, pin details, user boards, full board contents. $0.05–$2.00 per call.
- [Truth Social Scraper](https://hirescrape.com/api/tools/truth-social): Truth Social profiles, user posts, individual post details. $0.05–$2.00 per call.
- [Twitch Scraper](https://hirescrape.com/api/tools/twitch): Twitch streamer profiles and clip details. $0.05–$2.00 per call.
- [Kick Scraper](https://hirescrape.com/api/tools/kick): Kick.com clip details. $0.05–$2.00 per call.
- [Snapchat Scraper](https://hirescrape.com/api/tools/snapchat): Snapchat public user profiles. $0.05–$2.00 per call.
- [TikTok Shop Scraper](https://hirescrape.com/api/tools/tiktok-shop): TikTok Shop keyword search, shop product lists, product details + reviews, creator showcases. $0.05–$2.00 per call.
- [Facebook Ad Library Scraper](https://hirescrape.com/api/tools/fb-ad-library): Meta Ad Library: search ads by keyword or company, get single-ad details, filter by country, status, media type, date range. $0.05–$2.00 per call.
- [Google Ad Library Scraper](https://hirescrape.com/api/tools/google-ad-library): Google's Ads Transparency Center: advertiser search, full company ad history (with topic/region/date filters), single-ad details. $0.05–$2.00 per call.
- [LinkedIn Ad Library Scraper](https://hirescrape.com/api/tools/linkedin-ad-library): LinkedIn ads search by company name / ID / keyword with country + date filters, plus single-ad details. $0.05–$2.00 per call.
- [Google Search Scraper](https://hirescrape.com/api/tools/google-search): Plain Google search: organic results for a keyword with region, freshness, and pagination. $0.05–$2.00 per call.
- [Amazon Shop Scraper](https://hirescrape.com/api/tools/amazon-shop): Amazon storefront / shop page extraction: products, prices, metadata. $0.05–$2.00 per call.
- [Age & Gender Detection](https://hirescrape.com/api/tools/age-gender): Estimate age bucket + gender from a social profile's avatar. $0.05–$2.00 per call.
- [Linktree Scraper](https://hirescrape.com/api/tools/linktree): Extract all links + metadata from a Linktree profile. $0.05–$2.00 per call.
- [Komi Scraper](https://hirescrape.com/api/tools/komi): Extract creator link-in-bio data from Komi pages. $0.05–$2.00 per call.
- [Pillar Scraper](https://hirescrape.com/api/tools/pillar): Extract creator link-in-bio data from Pillar pages. $0.05–$2.00 per call.
- [lnk.bio Scraper](https://hirescrape.com/api/tools/linkbio): Extract creator link-in-bio data from lnk.bio pages. $0.05–$2.00 per call.
- [link.me Scraper](https://hirescrape.com/api/tools/linkme): Extract creator link-in-bio data from link.me pages. $0.05–$2.00 per call.

## Tool guidance

**Reddit Deep Scraper** (`/api/tools/reddit`): Use action=scrape_subreddit when the user names a subreddit. Use action=search_posts when they have a keyword. Use action=reddit_answers when they ask a question. Optional: includeComments=true (3x cost). limit defaults to 50; raise for breadth.

**Multi Job Board Scraper** (`/api/tools/jobs`): searchTerm is required. location and sites default sensibly. Use isRemote=true for remote-only. Use hoursOld for 'posted this week'. countryIndeed controls the Indeed/Glassdoor region.

**TikTok · Douyin · Bilibili Scraper** (`/api/tools/tiktok`): mode is required — video_detail (single URL), user_posts (all videos by user), video_comments, user_profile, user_likes (TikTok/Douyin), live_info, trending (Douyin/Bilibili). Provide url OR urls[].

**30Days Trend Intel** (`/api/tools/trend-intel`): topic is required (free text). depth tiers (quick and standard only — deep/full AI tiers are disabled): quick ($0.15, fast), standard ($0.35, thorough). timeframe: 7d/14d/30d/90d.

**Instagram Scraper** (`/api/tools/instagram`): mode=profile needs handle. mode=post/transcript needs url. mode=user_posts needs handle + limit. See schema for all modes and per-mode params.

**YouTube Scraper** (`/api/tools/youtube`): mode=channel needs channelId/handle/url. mode=video/transcript needs url. mode=search needs query (supports uploadDate, sortBy, region, continuationToken).

**LinkedIn Scraper** (`/api/tools/linkedin`): All modes take url. mode=company_posts adds page for pagination.

**Facebook Scraper** (`/api/tools/facebook`): mode=profile takes url (+ get_business_hours). mode=group_posts takes url or group_id. cursor/next_page_id drive pagination.

**X / Twitter Scraper** (`/api/tools/twitter`): mode=profile/user_tweets need handle. mode=tweet / tweet_transcript / community / community_tweets need url.

**Threads Scraper** (`/api/tools/threads`): mode=profile/user_posts need handle. mode=search accepts start_date / end_date. mode=post needs url.

**Bluesky Scraper** (`/api/tools/bluesky`): mode=profile/user_posts need handle (e.g. name.bsky.social) or user_id (DID). mode=post needs url.

**Pinterest Scraper** (`/api/tools/pinterest`): mode=search needs query. mode=pin/board need url. mode=user_boards needs handle.

**Truth Social Scraper** (`/api/tools/truth-social`): mode=profile needs handle. mode=user_posts accepts handle or user_id + next_max_id. mode=post needs url.

**Twitch Scraper** (`/api/tools/twitch`): mode=profile needs handle. mode=clip needs url.

**Kick Scraper** (`/api/tools/kick`): mode=clip needs url.

**Snapchat Scraper** (`/api/tools/snapchat`): mode=profile needs handle.

**TikTok Shop Scraper** (`/api/tools/tiktok-shop`): mode=search needs query (+ optional page, region). mode=products/product need url. mode=reviews needs url or product_id. mode=showcase needs handle.

**Facebook Ad Library Scraper** (`/api/tools/fb-ad-library`): mode=search_ads needs query (supports sort_by, search_type, ad_type, country, status, media_type, start_date, end_date). mode=company_ads accepts pageId or companyName. mode=ad needs id or url.

**Google Ad Library Scraper** (`/api/tools/google-ad-library`): mode=company_ads accepts domain OR advertiser_id (+ topic, region, start_date, end_date, get_ad_details). mode=search_advertisers needs query. mode=ad needs url.

**LinkedIn Ad Library Scraper** (`/api/tools/linkedin-ad-library`): mode=search_ads accepts company, companyId, keyword, countries (comma-separated), startDate/endDate. mode=ad needs url.

**Google Search Scraper** (`/api/tools/google-search`): query is required. Optional: region (country code), date_posted (freshness), page.

**Amazon Shop Scraper** (`/api/tools/amazon-shop`): mode=shop needs a full Amazon shop URL.

**Age & Gender Detection** (`/api/tools/age-gender`): url must be a public social profile URL.

**Linktree Scraper** (`/api/tools/linktree`): url must be a full Linktree profile URL.

**Komi Scraper** (`/api/tools/komi`): url must be a full Komi profile URL.

**Pillar Scraper** (`/api/tools/pillar`): url must be a full Pillar profile URL.

**lnk.bio Scraper** (`/api/tools/linkbio`): url must be a full lnk.bio profile URL.

**link.me Scraper** (`/api/tools/linkme`): url must be a full link.me profile URL.

## Pricing

| Tool | Path | Price range |
|---|---|---|
| Reddit Deep Scraper | `/api/tools/reddit` | $0.02–$0.52 |
| Multi Job Board Scraper | `/api/tools/jobs` | $0.05–$1.65 |
| TikTok · Douyin · Bilibili Scraper | `/api/tools/tiktok` | $0.02–$1.02 |
| 30Days Trend Intel | `/api/tools/trend-intel` | $0.15–$0.35 |
| Instagram Scraper | `/api/tools/instagram` | $0.05–$2.00 |
| YouTube Scraper | `/api/tools/youtube` | $0.05–$2.00 |
| LinkedIn Scraper | `/api/tools/linkedin` | $0.05–$2.00 |
| Facebook Scraper | `/api/tools/facebook` | $0.05–$2.00 |
| X / Twitter Scraper | `/api/tools/twitter` | $0.05–$2.00 |
| Threads Scraper | `/api/tools/threads` | $0.05–$2.00 |
| Bluesky Scraper | `/api/tools/bluesky` | $0.05–$2.00 |
| Pinterest Scraper | `/api/tools/pinterest` | $0.05–$2.00 |
| Truth Social Scraper | `/api/tools/truth-social` | $0.05–$2.00 |
| Twitch Scraper | `/api/tools/twitch` | $0.05–$2.00 |
| Kick Scraper | `/api/tools/kick` | $0.05–$2.00 |
| Snapchat Scraper | `/api/tools/snapchat` | $0.05–$2.00 |
| TikTok Shop Scraper | `/api/tools/tiktok-shop` | $0.05–$2.00 |
| Facebook Ad Library Scraper | `/api/tools/fb-ad-library` | $0.05–$2.00 |
| Google Ad Library Scraper | `/api/tools/google-ad-library` | $0.05–$2.00 |
| LinkedIn Ad Library Scraper | `/api/tools/linkedin-ad-library` | $0.05–$2.00 |
| Google Search Scraper | `/api/tools/google-search` | $0.05–$2.00 |
| Amazon Shop Scraper | `/api/tools/amazon-shop` | $0.05–$2.00 |
| Age & Gender Detection | `/api/tools/age-gender` | $0.05–$2.00 |
| Linktree Scraper | `/api/tools/linktree` | $0.05–$2.00 |
| Komi Scraper | `/api/tools/komi` | $0.05–$2.00 |
| Pillar Scraper | `/api/tools/pillar` | $0.05–$2.00 |
| lnk.bio Scraper | `/api/tools/linkbio` | $0.05–$2.00 |
| link.me Scraper | `/api/tools/linkme` | $0.05–$2.00 |

Prices are `min–max` quotes. A concrete quote for your exact input arrives in the 402 body `amount` and `breakdown` fields before you pay.

## Payment protocols

- [MPP on Tempo](https://mpp.dev) — **live today.** Stripe/Paradigm Machine Payments Protocol. USDC settled on Tempo L1 with sub-second confirmation and stablecoin-native gas. This is the only protocol that actually returns a challenge right now.
- [x402 on Base](https://www.x402.org) — **live.** x402 v2 transport with spec-compliant `PAYMENT-REQUIRED` / `PAYMENT-SIGNATURE` / `PAYMENT-RESPONSE` headers, verify + settle via Coinbase CDP facilitator, EIP-3009 `transferWithAuthorization` scheme (exact), CAIP-2 network identifier (`eip155:8453`). USDC settles on Base mainnet per successful request.
- [x402 on Solana](https://www.x402.org) — **coming soon.** SVM settlement path wired but held back pending production soak testing.
- [IETF Payment Auth draft](https://paymentauth.org) — the HTTP authentication framework both x402 and MPP implement.

## Wallets and recipients

- MPP on Tempo (live): USDC paid to `0xb5194A98DbDBb7028B585Db26B972e7F0F3f826A` (Tempo USDC `0x20c000000000000000000000b9537d11c60e8b50`).
- x402 on Base (live): USDC settles to `0xb5194A98DbDBb7028B585Db26B972e7F0F3f826A` (Circle native USDC `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`).
- x402 on Solana (coming soon): USDC will settle to the configured Solana address advertised in /openapi.json once enabled.

## Discovery

- [OpenAPI manifest](https://hirescrape.com/openapi.json): Canonical agent-readable catalog with `x-payment-info` per operation.
- [MCP transport](https://hirescrape.com/api/mcp): JSON-RPC 2.0 MCP server per [draft-payment-transport-mcp-00](https://paymentauth.org/draft-payment-transport-mcp-00.html). Advertises `capabilities.experimental.payment`, returns `-32042` on `tools/call` without credential, accepts the credential via `params._meta["org.paymentauth/credential"]`, and returns the receipt in the response `_meta`. Works with Claude Desktop, Cursor, and any MCP-compatible client.
- [Legacy x402 discovery](https://hirescrape.com/.well-known/x402): x402 v1 discovery for older x402-only crawlers.
- [Developer docs](https://hirescrape.com/docs): Quickstart, payment protocols, examples in curl/TypeScript/Python.

## Reliability, retries, and idempotency

Every paid `POST` endpoint honors `Idempotency-Key`. If your agent's network fails mid-request and you don't know whether the scrape ran and settled, retry the **same request** with the **same** `Idempotency-Key` header — the server returns the original response without re-running the scraper and without charging again. Cached replays include `Idempotent-Replayed: true` in the response headers so your retry loop can distinguish "I actually got charged" from "I got a cached replay."

- **TTL**: 10 minutes. After that, a retry counts as a new request.
- **Scope**: keyed on `(route, Idempotency-Key, canonical-JSON body)`. Same key with a different body is a different request; your agent does not need to rotate keys just because the body changed.
- **Safety**: concurrent submissions of the same verified payment credential are atomically rejected on the second attempt — a replay of a valid signed credential cannot double-settle on-chain even without `Idempotency-Key`.
- **Recommendation**: generate an `Idempotency-Key` (UUID) per logical task at the top of your agent loop; reuse it across any retries of the same call. AgentCash does this automatically when you pass the header through `mcp__agentcash__fetch`.

Pay-on-success is also in effect: if the scraper returns 5xx, no settlement fires — you are not charged for failed work. If settlement fails after a successful scrape, the data still comes back with `settled: false` so you can decide whether to retry.

## Quickstart (via AgentCash)

Three CLI commands get any agent paying:

1. `npx agentcash onboard` — creates a wallet at `~/.agentcash/wallet.json` and claims any available starter credits.
2. `npx agentcash try https://hirescrape.com` — discovers this origin, makes one live call, and shows the payment receipt.
3. `npx agentcash add https://hirescrape.com` — saves this origin to the agent's persistent context so future sessions auto-discover.

Alternatively, install the AgentCash MCP server in any compatible client (Claude Code, Cursor, Codex, Claude Desktop, Windsurf) and call `mcp__agentcash__fetch` against any URL on this site — payment is handled transparently.

## Workflow patterns

**Discover → quote → pay.** For any endpoint you haven't called before in a session:
1. `mcp__agentcash__discover_api_endpoints url=https://hirescrape.com` — lists tools + prices.
2. `mcp__agentcash__check_endpoint_schema url=https://hirescrape.com/api/tools/{tool} body=...` — probes the endpoint live (free), returns exact price quote.
3. `mcp__agentcash__fetch url=https://hirescrape.com/api/tools/{tool} method=POST body=...` — pays and returns data.

**Broad-to-narrow research.** For topic exploration:
1. Start with `/api/tools/trend-intel` to rank + cluster across Reddit, TikTok, YouTube, Instagram, HN, Polymarket.
2. Drill into the highest-signal platforms with their dedicated scrapers (e.g., `/api/tools/reddit` with `action=reddit_answers`).
3. Enrich profiles found via `/api/tools/linkedin` or `/api/tools/twitter`.

**Jobs lead flow.** For recruiting / talent research:
1. `/api/tools/jobs` with `searchTerm` + `location` — scans LinkedIn, Indeed, Glassdoor, Google Jobs, ZipRecruiter in one call.
2. `/api/tools/linkedin` with the returned company names — pulls decision-maker profiles.
3. `/api/tools/google-maps` if a physical location is needed.

**Social intel.** For brand / creator / trend tracking:
1. `/api/tools/tiktok` or `/api/tools/instagram` for creator content.
2. `/api/tools/fb-ad-library`, `/api/tools/google-ad-library`, or `/api/tools/linkedin-ad-library` for competitive ad spend.
3. Combine with `/api/tools/age-gender` to profile audience demographics.

## Error contract

Error bodies are RFC 9457 Problem Details (`application/problem+json`) with `{type, title, status, detail}`. Legacy `{error, message}` fields are kept alongside for back-compat. The canonical error codes:

- **402 payment-required** — no payment header. Sign the challenge (x402 `X-Payment` or MPP `Authorization: Payment`) and retry.
- **402 verification-failed** — signature malformed, underpriced, or expired. Read `detail` for the facilitator's reason.
- **404 unknown-tool** — tool ID in the path isn't in the registry.
- **429 rate-limited** — demo-tier quota hit. Body includes `retryAfterMs`; header includes `Retry-After`. Paid calls bypass this.
- **500 run-failed** — upstream scraper failed after payment settled. Response body may include `settled: false` if settlement also failed. Retry with the same `Idempotency-Key` first; if that still fails, contact support with the `runId`.
- **502 upstream-error** — backend provider returned an error. Payment NOT settled. Retry with different parameters.
- **504 timeout** — scrape exceeded 5 minutes. Payment already settled. Retry same input with the same `Idempotency-Key` to get the cached result if one exists.

Every successful response includes `payment: {protocol, amount, currency}` in the body and a `Payment-Receipt` header carrying a base64url-encoded `{status, method, timestamp, reference}` receipt for accounting. Responses carrying a receipt also include `Cache-Control: private`.

## Optional

- [Pricing page](https://hirescrape.com/pricing): Human-readable breakdown with examples.
- [MppScan listing](https://mppscan.com): Public MPP registry validation.
- [x402scan listing](https://www.x402scan.com): Public x402 registry.
- [AgentCash docs](https://agentcash.dev/docs): The AgentCash wallet that most agents use to pay.
- [About Merit Systems](https://merit.systems): Team behind AgentCash and the agentic payments tooling.
