mcpField
U
upwork-research

upwork-research

github.com/crawlora-orgProductivity144 installsUpdated 2d ago
Repository

About upwork-research

upwork-research is a skill for finding public Upwork job listings and retrieving job and freelancer details. It returns normalized JSON through the Crawlora API, supporting rate research and freelancer vetting.

Key features

  1. 01Keyword search for jobs
  2. 02Full posting details
  3. 03Freelancer profiles and feedback
  4. 04Paginated search results

Use cases

  1. 01Estimate market rates from job budgets
  2. 02Review a freelancer's score and feedback
  3. 03Check job details before applying

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/crawlora-org/crawlora-skills --skill upwork-research

After installing, type/upwork-researchin Claude Code to confirm it loaded.

Bundled filesreference/endpoints.mdscripts/crawlora.sh

Details

From the project README

Upwork research

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_KEY in the environment before running the helper.
  • The helper reads CRAWLORA_API_KEY from the environment and sends requests to https://api.crawlora.net/api/v1. Missing/invalid key → 401.

How it works

  1. Search — /upwork/search takes a free-text keyword (q) and returns normalized job summaries (title, budget, experience level, duration, posted date, description snippet, skill tags), paginated via page.
  2. Job detail — take an id from 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).
  3. 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/search for a skill (e.g. q="react developer"), collect the budget field across results to estimate a market rate for that skill.
  • Freelancer due diligence: /upwork/search or 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_KEY only — never hardcode, query-param, or commit it.
  • Job and freelancer ids come from search results — grab the id field from /upwork/search output 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/search is paginated — pass page to walk past the first page of results.

Comments

Markdown supported