Business · head-to-head
Freelancer vs Pick an Agency
Freelancer's API mirrors the full marketplace — projects, bids, milestones, messages, and user profiles — behind a standard OAuth 2.0 app-registration flow: a live call to `/api/users/0.1/self/` returns 401 `NOT_AUTHENTICATED` rather than any keyless access, and the OPTIONS preflight explicitly whitelists a custom `Freelancer-OAuth-V1` header, reconfirming OAuth as the real mechanism. A GET against the public `/api/projects/0.1/projects/active/` endpoint succeeds with no key at all and echoes `access-control-allow-origin: *` on both the GET and its preflight, resolving the stored 'unknown' CORS value to fully open. Freelancer's own Python SDK and developer portal document no separate paid tier or metering for the API itself — registering an app is free, with the marketplace's usual project fees applying only to actual freelance transactions, not API calls.
Pick an Agency runs a free, no-signup REST + MCP API over its directory of 47,000+ verified marketing agencies, publishing a machine-readable OpenAPI spec at `/api/v1/openapi.json` alongside `/search`, `/agencies/{slug}`, and `/match` endpoints for shortlisting agencies by service, location, and rating. An OPTIONS preflight against `/api/v1/search` confirms the advertised open CORS policy (`access-control-allow-origin: *`), and no endpoint ever demanded a key or returned an auth challenge, reconfirming the stored 'None' auth. The three data-fetching GET endpoints themselves consistently timed out from this sandbox's egress on every attempt — the spec and homepage load fine, so their live JSON payloads could not be directly confirmed this run, though nothing points to the API being down.
| Freelancer | Pick an Agency | |
|---|---|---|
| Authentication | OAuth | None |
| Pricing | free | free |
| Formats | JSON | JSON |
| CORS | yes | yes |
| HTTPS | Yes | Yes |
Pick an Agency needs no API key, while Freelancer requires OAuth — pick Pick an Agency to start without signup.