web3 APIweb3.career ↗
Access Web3 job listings, salary data, company profiles, and industry intelligence from web3.career via 9 structured API endpoints.
What is the web3 API?
The web3.career API exposes 9 endpoints covering job listings, salary benchmarks, company directories, and industry reports from web3.career. You can call get_job_listings to pull paginated postings with title, company, location, salary, tags, and posting date, or use search_jobs to query across titles, descriptions, and companies by keyword. Each job object links directly to a detail page where the full description and application link are available.
curl -X GET 'https://api.parse.bot/scraper/2f8e3ad7-2bb3-4f71-aafe-bd9b6f56c5cf/get_job_listings?page=1' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace web3-career-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Web3Career SDK — browse jobs, drill into details, explore companies and salaries."""
from parse_apis.web3_careers_api import Web3Career, Tag, NotFoundError
client = Web3Career()
# Browse the latest Web3 job listings
for job in client.jobsummaries.list(limit=5):
print(job.title, job.company, job.salary, job.posted_date)
# Filter by skill tag using the Tag enum
for rust_job in client.jobsummaries.list_by_tag(tag=Tag.RUST, limit=3):
print(rust_job.title, rust_job.company, rust_job.location)
# Search for a keyword and drill into the first result's full details
match = client.jobsummaries.search(query="Solidity", limit=1).first()
if match:
detail = match.details()
print(detail.title, detail.company, detail.description[:100], detail.apply_link)
# Explore a company's open positions via constructible resource
try:
binance = client.company("binance")
for company_job in binance.jobs.list(limit=3):
print(company_job.title, company_job.posted_date, company_job.tags)
except NotFoundError as exc:
print(f"Company not found: {exc}")
# Fetch the industry intelligence report
report = client.intelligencereports.get()
print(report.title, report.highlighted_stats[:2])
# Check salary benchmarks across Web3 roles
for salary in client.salaries.list(limit=5):
print(salary.role, salary.average_salary, salary.url)
print("exercised: jobsummaries.list / list_by_tag / search / details / company.jobs.list / intelligencereports.get / salaries.list")
Fetch general job listings from the homepage with pagination. Returns Web3 job postings including title, company, location, salary, tags, and posting date. Results are ordered by recency.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
{
"type": "object",
"fields": {
"jobs": "array of job listing objects with keys: job_id, title, company, location, salary, posted_date, tags, url",
"page": "string representing the current page number"
},
"sample": {
"data": {
"jobs": [
{
"url": "https://web3.career/senior-fullstack-engineer-backend-focus-rugsdotfun/150325",
"tags": [
"backend",
"engineer",
"full stack",
"senior",
"crypto"
],
"title": "Senior Fullstack Engineer (Backend Focus)",
"job_id": "150325",
"salary": "",
"company": "RugsDotFun",
"location": "",
"posted_date": "1h"
}
],
"page": "1"
},
"status": "success"
}
}About the web3 API
Job Discovery and Filtering
get_job_listings returns the most recent postings from the site's homepage, ordered by recency, with fields including job_id, title, company, location, salary, posted_date, tags, and url. To narrow by skill or category, get_jobs_by_tag accepts a tag parameter — values like backend, solidity, or defi map to the corresponding filtered listing path — and returns the same job object shape. get_remote_jobs isolates positions explicitly tagged as remote. All three endpoints support a page integer for pagination.
Search and Job Detail
search_jobs takes a required query string (e.g., Rust, London, Bitcoin) and returns paginated results matching against job titles, descriptions, and companies, along with a query echo field for confirmation. Once you have a listing URL from any of these endpoints, pass it to get_job_detail to retrieve the full description text, salary range, apply_link, and company name for that specific position.
Company Directory
get_web3_companies returns a paginated list of hiring companies, each with a name and url. The slug embedded in the company URL — for example binance from /web3-companies/binance — can be passed directly as company_slug to get_company_jobs, which returns all active listings for that company with the full job object structure.
Salary Data and Intelligence Report
get_web3_salaries returns a list of Web3 roles with their average_salary and a link to each role's detail page — useful for building compensation benchmarks. get_intelligence_report returns the full Web3 Career Intelligence Report as structured data: the report title, content text, a google_slides_url for the embedded presentation, and a highlighted_stats array of key statistical findings extracted from the report.
The web3 API is a managed, monitored endpoint for web3.career — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when web3.career changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official web3.career API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate daily Web3 job postings by tag (e.g., 'solidity', 'rust') into a curated job board or newsletter.
- Build a salary comparison tool for Web3 roles using
average_salarydata fromget_web3_salaries. - Track a specific company's open positions over time using
get_company_jobswith theircompany_slug. - Power a job search widget with keyword-based results from
search_jobsfiltering by technology or location. - Compile a remote-only Web3 job feed using
get_remote_jobsfor location-independent candidates. - Extract key industry statistics for research or reporting from
get_intelligence_report'shighlighted_statsarray. - Cross-reference job listings with company directories to identify which companies are most actively hiring in a given skill category.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does web3.career offer an official developer API?+
What does `get_job_detail` return that the listing endpoints don't?+
get_job_detail returns the full description text of the job and the apply_link URL, neither of which appear in the listing-level job objects. You pass a url obtained from any listing endpoint to retrieve these fields for a specific posting.Does the API expose historical job postings or closed positions?+
Can I filter job listings by both tag and location simultaneously?+
get_jobs_by_tag filters by a single skill or category tag, and search_jobs accepts a query string that can include location terms. There is no endpoint that applies both a tag filter and a location filter in one call. You can fork this API on Parse and revise it to add a combined filter endpoint.How granular is the salary data from `get_web3_salaries`?+
average_salary per role along with a url to that role's detail page on web3.career. It does not break salary down by experience level, geography, or company size. Those additional dimensions are not currently covered — you can fork this API on Parse and revise it to add more granular salary breakdowns if the underlying detail pages expose them.