Meta Careers APImetacareers.com ↗
Search and retrieve Meta job listings via API. Access job summaries, full details, salary ranges, and filters for University Grad and AR/VR roles.
What is the Meta Careers API?
This API exposes 4 endpoints for querying Meta's job board at metacareers.com, returning structured data on open positions across all departments and locations. The search_jobs endpoint accepts a keyword query and a limit parameter to return matching job summaries — each including a numeric ID, title, and location data — while get_job_details resolves a single posting into its full description, salary range, employment type, and direct application URL.
curl -X GET 'https://api.parse.bot/scraper/3283744e-50f9-4834-aff7-d990025aa33b/search_jobs?limit=5&query=engineer' \ -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 metacareers-com-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: Meta Careers SDK — search jobs, drill into details, explore categories."""
from parse_apis.meta_careers_api import MetaCareers, JobNotFound
client = MetaCareers()
# Search for engineering jobs — limit caps total items fetched.
for job in client.jobsummaries.search(query="engineer", limit=5):
print(job.title, job.location)
# Drill into one result to get full job details.
summary = client.jobsummaries.search(query="data scientist", limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.job_type, detail.location)
print(detail.description[:120])
# List AR/VR positions from Reality Labs.
for arvr_job in client.jobsummaries.list_arvr(limit=3):
print(arvr_job.title, arvr_job.locations)
# Typed error handling on a direct detail lookup.
if summary:
try:
refreshed = detail.refresh()
print(refreshed.title, refreshed.posted_date)
except JobNotFound as exc:
print(f"Job no longer exists: {exc}")
print("exercised: search / details / list_arvr / refresh")
Full-text search over Meta job listings. query matches title and description; omitting it returns all available jobs. Results are job summaries (id, title, locations). Limit controls the page-size bucket the server uses (5/10/50/100). Does not paginate beyond a single page.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results to return. Server page-size buckets: 1-5 returns up to 5, 6-10 up to 10, 11-50 up to 50, 51+ up to 100. |
| query | string | Search keyword to filter jobs by title or description. Omitting returns all available jobs. |
{
"type": "object",
"fields": {
"jobs": "array of job summary objects each containing id, title, locations (array), and location (comma-separated string)",
"count": "integer, number of jobs returned"
},
"sample": {
"data": {
"jobs": [
{
"id": "2188512621989850",
"title": "DFX Engineer",
"location": "Sunnyvale, CA",
"locations": [
"Sunnyvale, CA"
]
}
],
"count": 1
},
"status": "success"
}
}About the Meta Careers API
Search and Browse Meta Job Listings
The search_jobs endpoint accepts an optional query string matched against job titles and descriptions. Omitting the query returns all available listings. The limit parameter maps to server-side page-size buckets (1–5, 6–10, 11–50, 11–100), so results are capped at the bucket ceiling. Each result in the jobs array includes an id, title, locations array, and a location comma-separated string. The count field reflects the number of records returned in that response. Note that this endpoint does not support multi-page traversal — it returns a single page of results.
Full Job Details
Once you have a numeric job ID from any listing endpoint, get_job_details returns the complete posting. Response fields include title, company (always 'Meta'), jobType (e.g. 'Full-time' or 'Internship'), applyUrl, location, postedDate as an ISO 8601 string, and salary data via salaryMin, salaryMax, and currency. Salary fields return null when Meta has not published a range for that role.
Specialized Category Endpoints
get_university_grad_jobs scopes results to University Graduate positions — covering Business, Engineering/Tech/Design, and PhD/Postdoc tracks — without requiring any keyword input. get_arvr_jobs returns listings tied to Meta's Reality Labs and AR/VR teams specifically. Both endpoints share the same summary response shape as search_jobs (id, title, locations, location, count) and accept the same limit buckets. These are useful when you want a category-scoped list without constructing a keyword query.
The Meta Careers API is a managed, monitored endpoint for metacareers.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when metacareers.com 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 metacareers.com 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 Meta open roles into an internal job board filtered by location or job type
- Monitor new AR/VR postings from Reality Labs using get_arvr_jobs on a scheduled basis
- Pull University Graduate listings via get_university_grad_jobs to surface entry-level Meta roles to students
- Resolve job IDs from search_jobs into full postings with get_job_details to extract salary ranges
- Build a job alert system that tracks when Meta posts roles matching a specific keyword query
- Compare postedDate values across listings to identify recently added positions
- Feed Meta job data into recruiting dashboards that track headcount and hiring signals by department
| 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.