Search Upwork job postings and pull freelancer profiles — all as normalized JSON from the Crawlora API, no scraping Upwork's pages by hand.
When to use this skill
- "Search Upwork for <skill/role> jobs." — free-text keyword search over public job listings.
- "Show me this Upwork job posting." — full detail (budget, description, client history) for one posting by id.
- "Look up this Upwork freelancer." — profile, hourly rate, Job Success Score, ratings, and recent client feedback by freelancer id.
- "What's the going rate for on Upwork?" — collect budgets across search results to estimate a market rate.
- "Vet this freelancer before hiring." — pull their profile and feedback history in one call.
Setup (one-time)
- Get a free Crawlora API key (2,000 credits/mo, no card) at https://crawlora.net.
- Set
CRAWLORA_API_KEYin the environment before running the helper. - The helper reads
CRAWLORA_API_KEYfrom the environment and sends requests tohttps://api.crawlora.net/api/v1. Missing/invalid key →401.
How it works
- Search —
/upwork/searchtakes a free-text keyword (q) and returns normalized job summaries (title, budget, experience level, duration, posted date, description snippet, skill tags), paginated viapage. - Job detail — take an
idfrom a search result and call/upwork/job/{id}for the full posting: description, employment type, budget (hourly range or fixed amount), location/remote type, experience level, duration, project type, proposal count, allowed applicant countries, and a summary of the posting client (member since, location, spend, hires, hours, industry, company size). - Freelancer profile —
/upwork/freelancer/{id}returns a normalized profile: name, title, verification badge, overview, hourly rate, rating and review count, Job Success Score, location and local time, total jobs/hours worked, and recent client feedback (title, comment, date, client name, rating).
Full endpoint list, methods, and params: reference/endpoints.md.
Calling the API
# Search jobs by keyword:
scripts/crawlora.sh /upwork/search q="react developer" | jq '.'
# Job detail (id from a search result):
scripts/crawlora.sh /upwork/job/<job_id> | jq '.'
# Freelancer profile (id from a search result or a known profile):
scripts/crawlora.sh /upwork/freelancer/<freelancer_id> | jq '.'
Use scripts/crawlora.sh for all requests; it keeps the API key out of command-line arguments.
Endpoint reference
See reference/endpoints.md for all Upwork endpoints this skill uses.
Examples
- Freelance rate-check:
/upwork/searchfor a skill (e.g.q="react developer"), collect thebudgetfield across results to estimate a market rate for that skill. - Freelancer due diligence:
/upwork/searchor a known id to find a candidate, then/upwork/freelancer/{id}to check their Job Success Score, hourly rate, hours worked, and recent client feedback before reaching out.
Notes & limits
- Credits / pay-on-success: billed only on
2xx; free tier 2,000 credits/mo. Key at https://crawlora.net. - Public data only — public postings/profiles; respect Upwork's terms.
- Security: key lives in
CRAWLORA_API_KEYonly — never hardcode, query-param, or commit it. - Job and freelancer ids come from search results — grab the
idfield from/upwork/searchoutput rather than guessing one. - Data is sourced from Upwork's own server-rendered pages via a real browser-rendering backend, so fields reflect exactly what's publicly visible on the page (no data behind Upwork's login wall).
/upwork/searchis paginated — passpageto walk past the first page of results.