
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape guru.com freelance jobs (title, budget, type, deadline, quotes, skills, employer spend and feedback) and freelancer profiles (rates, earnings, feedback, services, skills). Search by keyword, category, location or URL.
Scrape freelance jobs and freelancer profiles from guru.com in seconds. Get budgets, deadlines, quote counts, skills and employer spend for every open job, or rates, earnings, feedback scores and services for freelancers and agencies. No login, no browser, and it costs $0.70 per 1,000 results.
YYYY-MM-DD, skills as a clean list, and employer spend, earnings and feedback as numbers.web developer, wordpress, bookkeeping), or paste guru.com URLs such as https://www.guru.com/d/jobs/ (every open job), a category page, a job or a freelancer profile.| Field | What it does |
|---|---|
searchType | jobs (default) or freelancers |
keywords | Skills or job titles; each runs as its own search |
startUrls | guru.com job or freelancer search pages, single jobs or freelancer profiles |
maxItems | Maximum results in total (default 20, 0 = no limit) |
location | Country (United States) or, for freelancers, City, State, Country |
category | One of guru.com's 10 categories, e.g. programming-development |
jobType | Jobs: fixed or hourly |
minEmployerSpend / maxQuotes | Jobs: employers who spent at least $500 to $50,000; jobs with fewer than 10 to 50 quotes |
minEarnings | Freelancers: all-time earnings above $25k, $50k, $100k or $250k |
sortBy | Jobs: newest, oldest, closingSoon, budgetHigh, budgetLow. Freelancers: relevance, earnings, reviews, rateHigh, rateLow |
maxItemsPerSearch | Optional cap per keyword or URL |
includeDetails | Open each job or profile for the full details |
{
"searchType": "jobs",
"keywords": ["web developer", "wordpress"],
"jobType": "fixed",
"sortBy": "newest",
"maxItems": 50,
"includeDetails": true
}
Freelancers in Germany with more than $25,000 in all-time earnings, highest 12-month earnings first:
{
"searchType": "freelancers",
"keywords": ["content writer"],
"location": "Germany",
"minEarnings": "25k+",
"sortBy": "earnings",
"maxItems": 100
}
Every result has a type of job or freelancer. Fields marked details need includeDetails.
Jobs
| Field | Example |
|---|---|
title, url, id | Job title, job page, guru.com job id |
jobType, budget, budgetMin, budgetMax | Hourly, $25 - $55, 25, 55 |
hoursPerWeek, duration | Hourly jobs: 30+ hrs/wk, 6+ months |
posted, datePosted, deadline | 9 hrs ago, 2026-10-21, 2026-10-28 |
quoteCount, quotesText | 5, 5 Quotes Received |
category, subcategory, skills | Business & Finance, Accounting & Finance, ["QuickBooks", ...] |
description, descriptionIsSnippet | Search snippet, or the full text in details mode |
preferredLocations | Where the employer wants the freelancer to be |
employerName, employerImage, location | Employer screen name, avatar and country |
spending, employerFeedback | Employer's total spend in USD, feedback % |
employerIdVerified, employerPaymentVerified | Verification badges |
details featured, premiumQuotes, invited, hired | Job activity |
details employerJobsPosted, employerJobsPaid, employerPaidInvoices, employerOutstandingInvoices | Employer history |
Freelancers
| Field | Example |
|---|---|
name, profileUrl, id, logo | Name, profile page, guru.com id, avatar |
location, city, state, country | Austin, Texas, United States |
earnings, satisfaction, reviewsCount | Earnings in the last 12 months (USD), feedback %, reviews |
hourlyRate, startingRate, ratesText | Rates of the top service |
serviceTitle, serviceUrl, description, image | The top service shown in search |
category, subcategory, skills | Category and skills of the top service |
memberLevel, serviceCount, portfolioCount, videoUrl, whatsAppAvailable | Profile extras |
details allTimeEarnings, transactionsCompleted, employersCount, largestEmployer, memberSince | All-time track record |
details profileSkills, services, ratingCount, profileCreatedAt, profileUpdatedAt | Full skill list and every service with rates |
Example job (from a test run; the employer name is changed):
{
"type": "job",
"id": 2121453,
"title": "Bookkeeper, Accountant, Admin, Organize",
"url": "https://www.guru.com/jobs/bookkeeper-accountant-admin-organize/2121453",
"jobType": "Hourly",
"budget": "$25 - $55",
"budgetMin": 25,
"budgetMax": 55,
"hoursPerWeek": "30+ hrs/wk",
"duration": "6+ months",
"price": "Hourly | $25 - $55 | 30+ hrs/wk | 6+ months",
"posted": "9 hrs ago",
"datePosted": "2026-10-21",
"deadline": "2026-10-28",
"quoteCount": 5,
"quotesText": "5 Quotes Received",
"category": "Business & Finance",
"subcategory": "Accounting & Finance",
"skills": ["QuickBooks", "Accounting", "Billing", "Bookkeeping", "Payroll", "Microsoft Excel"],
"description": "US CITIZENS and RESIDENTS ONLY! MUST know US Booking, Accounting, Admin, Organization, exceptionally-well. ...",
"descriptionIsSnippet": false,
"preferredLocations": [],
"employerName": "Jane D",
"location": "United States",
"spending": 14934,
"employerFeedback": 99.9,
"employerIdVerified": false,
"employerPaymentVerified": false,
"featured": false,
"premiumQuotes": 0,
"invited": 0,
"hired": 0,
"employerJobsPosted": 372,
"employerJobsPaid": 78,
"employerPaidInvoices": 295,
"employerOutstandingInvoices": 0,
"searchQuery": "https://www.guru.com/d/jobs/",
"scrapedAt": "2026-10-21T21:03:42.293Z"
}
Example freelancer (from a test run; name and links are changed):
{
"type": "freelancer",
"id": 5350641,
"name": "Northwind Content Studio",
"profileUrl": "https://www.guru.com/freelancers/northwind-content-studio",
"location": "Lahore, Punjab, Pakistan",
"city": "Lahore",
"state": "Punjab",
"country": "Pakistan",
"earnings": 34278,
"satisfaction": 100,
"reviewsCount": 5,
"hourlyRate": 10,
"startingRate": 100,
"ratesText": "$10/hr · Starting at $100",
"serviceTitle": "Website Content Writer",
"description": "Elevate your online presence with our professional website content writing services. ...",
"category": "Writing & Translation",
"subcategory": "Articles & News",
"skills": ["Article Editing", "Article Writing", "Blog Writing", "Content Writing"],
"memberLevel": "Executive",
"serviceCount": 0,
"portfolioCount": 0,
"whatsAppAvailable": true,
"searchQuery": "content writer",
"scrapedAt": "2026-10-21T21:07:19.159Z"
}
You pay $0.70 per 1,000 results ($0.0007 per job or freelancer), with or without details, plus platform usage (compute and proxy traffic). Usage is small: about $0.0004 for 100 search results in our test runs, and more with details because every result opens one extra page.
Example: 1,000 freelancer profiles ≈ $0.70 in result fees plus a few cents of usage at most. You never pay for rows that were not saved, and you can cap a run with the maximum charge setting.
Is it legal to scrape guru.com? The actor only reads public pages that anyone can open without an account. You are responsible for how you use the data, including privacy rules such as the GDPR for personal data. Check guru.com's terms for your use case.
Do I need a guru.com account or my own proxy? No. No login, no cookies. The actor uses Scrapely datacenter proxies by default and moves to US residential proxies by itself if guru.com starts refusing requests.
How many results can I get? Jobs: every open job on guru.com (about 175 when we tested; guru.com lists only open jobs). Freelancers: guru.com shows 2,000 results per search, and the actor splits bigger searches by category and sort order to go further. Use several keywords or locations for very large lists.
Why are some fields empty? guru.com does not show every field for every result: many jobs have no budget amount ("Fixed Price" only), new employers have no spend or feedback yet, and freelancers without reviews have no feedback score. Detail fields are filled only with Open each result for full details.
Is the job description complete?
Without details you get the search snippet (descriptionIsSnippet: true when guru.com cut it). With details you get the description shown on the public job page.
Can I schedule it or use the API? Yes. Schedule runs in the console (for example every hour for new jobs), call the actor through the Scrapely API, or connect it with webhooks and integrations.
Country or City, State, Country exactly as guru.com spells it.datePosted without details is worked out from relative times such as "5 hrs ago", so it can be off by a day around midnight UTC.Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchTypeenumOptionaldefault "jobs"What to scrape
Search open freelance jobs, or freelancer profiles (people and agencies offering services). Applies to keywords and filters; start URLs decide for themselves.
keywordsarrayOptionalSearch keywords
Skills or job titles as you would type them into the guru.com search box (for example web developer, wordpress, bookkeeping, logo design). Each keyword runs as its own search with the filters below; results found by several searches are saved once.
startUrlsarrayOptionalguru.com URLs
Paste guru.com pages: job searches (https://www.guru.com/d/jobs/ or a category page such as https://www.guru.com/d/jobs/c/programming-development/), freelancer searches (https://www.guru.com/d/freelancers/l/germany/), single jobs (https://www.guru.com/jobs/.../2121454) or freelancer profiles (https://www.guru.com/freelancers/...). Filters inside a search URL are kept as they are.
maxItemsintegerOptionaldefault 20Max results
Maximum number of results to save in total. Use 0 for no limit. guru.com shows at most 2,000 results (100 pages) per search; bigger freelancer searches are split by category and sort order automatically.
locationstringOptionalLocation
Country (United States, India, Germany) or, for freelancers, 'City, State, Country' (Berlin, Berlin, Germany). For jobs this is the employer's preferred freelancer location.
categoryenumOptionalCategory
Only results from this guru.com category.
jobTypeenumOptionalJob type (jobs)
Jobs only: fixed-price or hourly jobs.
minEmployerSpendenumOptionalMinimum employer spend (jobs)
Jobs only: employers who have spent at least this much on guru.com.
maxQuotesenumOptionalMaximum quotes received (jobs)
Jobs only: jobs with fewer quotes (less competition).
minEarningsenumOptionalMinimum all-time earnings (freelancers)
Freelancers only: freelancers whose all-time earnings on guru.com are above this amount.
sortByenumOptionalSort by
Result order. Job sorts apply to job searches, freelancer sorts to freelancer searches.
maxItemsPerSearchintegerOptionalMax results per search
Optional cap for each keyword or URL search, so one broad search cannot use up the whole run. 0 or empty: no cap.
includeDetailsbooleanOptionaldefault falseOpen each result for full details
Jobs: full description, exact posting date, featured flag, premium quotes, invited and hired counts, employer jobs posted / paid and invoices. Freelancers: all-time earnings, transactions, employers, largest employer, member since, full skill list and every service with rates. One extra page per result: slower, same price per result.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter proxies work for guru.com; if the site starts refusing them, the scraper moves to US residential proxies by itself. Residential runs are pinned to the US unless you pick a country.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| type | string | job or freelancer |
| id | number | null | guru.com job id or freelancer id |
| title | string | null | Job title |
| url | string | null | Job page URL |
| jobType | string | null | Fixed Price, Hourly or Fixed Price or Hourly |
| budget | string | null | Budget or hourly rate range as shown, e.g. $5k-$10k or $25 - $55 |
| budgetMin | number | null | Lower budget bound in USD (per hour for hourly jobs) |
| budgetMax | number | null | Upper budget bound in USD (per hour for hourly jobs) |
| hoursPerWeek | string | null | Hourly jobs: expected hours per week |
| duration | string | null | Hourly jobs: expected duration |
| price | string | null | Job type, budget and terms in one line |
| posted | string | null | When the job was posted, as shown (e.g. 5 hrs ago) |
| datePosted | string | null | Posting date (YYYY-MM-DD): from the job page in details mode, otherwise worked out from the relative posting time |
| deadline | string | null | Date quotes must be sent by (YYYY-MM-DD) |
| quoteCount | number | null | Quotes received |
| quotesText | string | null | Quotes received, as shown |
| premiumQuotes | number | null | Premium quotes (details mode) |
| invited | number | null | Freelancers invited (details mode) |
| hired | number | null | Freelancers hired (details mode) |
| featured | boolean | null | Featured job (details mode) |
| category | string | null | guru.com category |
| subcategory | string | null | guru.com subcategory |
| skills | array | null | Skills |
| description | string | null | Job description, or the freelancer's top service description |
| descriptionIsSnippet | boolean | null | True when the description is the short search snippet; details mode stores the full text |
| preferredLocations | array | null | Employer's preferred freelancer locations |
| employerName | string | null | Employer screen name |
| employerImage | string | null | Employer avatar URL |
| location | string | null | Employer location (jobs) or freelancer location |
| spending | number | null | Employer's total spend on guru.com in USD |
| employerFeedback | number | null | Employer feedback score in percent |
| employerIdVerified | boolean | null | Employer ID verified |
| employerPaymentVerified | boolean | null | Employer payment method verified |
| employerJobsPosted | number | null | Jobs posted by the employer (details mode) |
| employerJobsPaid | number | null | Jobs paid by the employer (details mode) |
| employerPaidInvoices | number | null | Paid invoices (details mode) |
| employerOutstandingInvoices | number | null | Outstanding invoices (details mode) |
| name | string | null | Freelancer or agency name |
| profileUrl | string | null | Freelancer profile URL |
| logo | string | null | Freelancer avatar URL |
| city | string | null | Freelancer city |
| state | string | null | Freelancer state or province |
| country | string | null | Freelancer country |
| earnings | number | null | Earnings in the last 12 months in USD |
| satisfaction | number | null | Feedback score in the last 12 months, percent |
| reviewsCount | number | null | Number of feedback reviews |
| hourlyRate | number | null | Hourly rate of the top service in USD |
| startingRate | number | null | Starting price of the top service in USD |
| ratesText | string | null | Rates as shown |
| serviceTitle | string | null | Title of the freelancer's top service |
| serviceUrl | string | null | URL of the top service |
| image | string | null | Cover image of the top service |
| memberLevel | string | null | Membership level badge (e.g. Executive) |
| serviceCount | number | null | Number of services |
| portfolioCount | number | null | Number of portfolio items |
| videoUrl | string | null | Profile video URL |
| whatsAppAvailable | boolean | null | Freelancer accepts WhatsApp contact requests |
| allTimeEarnings | number | null | All-time earnings in USD (details mode) |
| transactionsCompleted | number | null | Transactions completed (details mode) |
| employersCount | number | null | Number of employers (details mode) |
| largestEmployer | number | null | Earnings from the largest employer in USD (details mode) |
| memberSince | string | null | Member since (details mode) |
| ratingCount | number | null | Number of ratings (details mode) |
| profileSkills | array | null | Every skill on the profile (details mode) |
| services | array | null | Every service with title, URL, rates and description (details mode) |
| profileCreatedAt | string | null | Profile creation time (details mode) |
| profileUpdatedAt | string | null | Profile last update time (details mode) |
| searchQuery | string | null | Keyword or URL that found the result |
| scrapedAt | string | null | When the result was scraped (ISO 8601) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | One saved guru.com job or freelancer profile, including the detail page data when enabled. | $0.0007 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('openrole/guru-scraper').call({
"searchType": "jobs",
"keywords": [
"web developer"
],
"startUrls": [],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run openrole/guru-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=openrole/guru-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Freelancer profiles for a keyword with rates, earnings and skills
Every open job, newest first, with full description and employer history
Open hourly jobs with rate range, hours per week and duration
Freelancers in one country filtered by all-time earnings
All-time earnings, transactions, member since and every service
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.