CareerOneStop APICareerOneStop.com ↗
Search 9,500+ scholarships and live job postings from CareerOneStop. Four endpoints cover scholarship search, award details, job search, and job details.
What is the CareerOneStop API?
This API exposes four endpoints covering CareerOneStop's Scholarship Finder — a directory of more than 9,500 scholarships, fellowships, grants, and prizes — and its Job Finder, which surfaces live postings from the National Labor Exchange. Use search_scholarships to filter awards by keyword, study level, award type, and state, then call get_job_details to pull the full posting description and apply URL for any matching position.
curl -X GET 'https://api.parse.bot/scraper/addbed65-526f-46f2-b9e8-5eae2d53176d/search_scholarships?keyword=internship&study_level=high_school' \ -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 careeronestop-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: CareerOneStop SDK — search scholarships and jobs, drill into details."""
from parse_apis.careeronestop_com_api import (
CareerOneStop, StudyLevel, JobSort, InputNotFound,
)
client = CareerOneStop()
# Search scholarships open to high-school students, capped at 5 results.
for award in client.scholarship_summaries.search(
keyword="internship", study_level=StudyLevel.HIGH_SCHOOL, limit=5,
):
print(award.name, "|", award.organization, "|", award.deadline)
# Drill into the first scholarship for full eligibility details.
first_award = client.scholarship_summaries.search(
keyword="engineering", study_level=StudyLevel.BACHELORS, limit=1,
).first()
if first_award is not None:
detail = first_award.details()
print(detail.name)
print("Qualifications:", detail.qualifications)
print("Funds:", detail.funds, "| Duration:", detail.duration)
# Search internship jobs in Texas, sorted by newest first.
for job in client.job_summaries.search(
keyword="internship", location="Texas", sort=JobSort.DATE_DESC, limit=5,
):
print(job.title, "@", job.company, "-", job.location)
# Take one job hit and fetch its full description via the typed navigation.
hit = client.job_summaries.search(keyword="intern", location="Houston, TX", limit=1).first()
if hit is not None:
try:
full = hit.details()
print(full.title, "|", full.company)
if full.description_text:
print(full.description_text[:200])
print("Apply:", full.apply_url)
except InputNotFound:
# Postings expire; the id from search may already be gone.
print("Posting", hit.job_id, "has expired")
print("exercised: scholarship_summaries.search / details / job_summaries.search / details")
Searches CareerOneStop's Scholarship Finder, a directory of more than 9,500 scholarships, fellowships, grants, prizes and other financial-aid awards, including internship, summer and research programs for students. All inputs are optional: with none, the whole directory is listed ordered by nearest deadline. Filters narrow by keyword (e.g. internship, summer, research), level of study (high school, vocational/trade school, associate, bachelor's, graduate, professional development), award type, the applicant's state of residence and the state where study must take place. One round trip returns one page of result rows (each row a scholarship summary carrying scholarship_id for get_scholarship_details); page and page_size drive paging, total is the site's total match count and has_more says whether a further page exists. A page past the last one, or a search with no matches, returns an empty scholarships array with total from the site (a second cheap request is made in the past-the-end case to read the total).
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based result page number. |
| sort | string | Result ordering. |
| keyword | string | Free-text keyword matched against the award name, purpose and description (e.g. internship, summer, research, nursing). Omitted = no keyword filter. |
| page_size | integer | Rows per page; the site accepts exactly 10, 25, 50, 100 or 500 and other values are rejected. |
| award_type | string | Restrict to one award type. Omitted = all types. |
| study_level | string | Restrict to awards open to students at this level of study. Omitted = all levels. |
| study_state | string | Place-of-study restriction as the site labels it: a full US state / territory name (e.g. Texas), or US, or International. Unrecognized values yield an empty result. |
| residence_state | string | Applicant residence restriction as the site labels it: a full US state / territory name (e.g. Texas, District of Columbia, Puerto Rico), or US for awards restricted to US residents, or International. Unrecognized values yield an empty result. |
{
"type": "object",
"fields": {
"page": "integer page returned",
"total": "integer total number of matching awards reported by the site",
"has_more": "boolean, true when page*page_size < total",
"page_size": "integer rows per page requested",
"scholarships": "array of award summaries: scholarship_id (string, use with get_scholarship_details), name, organization, purpose (nullable), levels_of_study (array of level labels), award_types (array of type labels, may contain N/A), award_amounts (array of amount strings as shown by the site, may contain N/A), deadline (month name or day, nullable)"
},
"sample": {
"data": {
"page": 1,
"total": 12,
"has_more": true,
"page_size": 10,
"scholarships": [
{
"name": "MSGC Internships",
"purpose": "To support undergraduate internships at NASA field centers through our aerospace workforce development program and High School internships in STEM research institutions in Maine through our MERITS program.",
"deadline": "February",
"award_types": [
"N/A"
],
"organization": "Maine Space Grant Consortium",
"award_amounts": [
"$6,500"
],
"scholarship_id": "9993442",
"levels_of_study": [
"Bachelor's Degree",
"High School"
]
}
]
},
"status": "success"
}
}About the CareerOneStop API
Scholarship Search and Detail
search_scholarships queries CareerOneStop's directory of over 9,500 awards including scholarships, fellowships, grants, prizes, internships, and summer research programs. All inputs are optional: omitting all of them returns the full directory. You can narrow results with keyword (matched against award name, purpose, and description), award_type, study_level, study_state (place of study, as a full US state name, "US", or international), and residence_state. The page_size parameter accepts only the values 10, 25, 50, 100, or 500 — other values are rejected. Each result in the scholarships array carries a scholarship_id you can pass to get_scholarship_details, which returns the full record: sponsoring organization, address, phone, emails, website, purpose, focus, qualifications, selection criteria, funds amount, number of awards, duration, how-to-apply instructions, and deadline.
Job Search and Detail
search_jobs queries CareerOneStop's Job Finder, which draws postings from the National Labor Exchange. The keyword parameter is required; location accepts a US state name, a city-and-state pair, or a 5-digit ZIP code. When a city or ZIP is provided, the radius parameter (accepting only 5, 25, 50, or 100 miles) scopes the geographic window. page_size accepts only 10, 25, 50, 100, or 250. Results include a federal_contractor boolean flag per posting and a total count capped at 10,000. Pass any job_id from search results to get_job_details to retrieve the posting's full description in both plain text (description_text) and HTML (description_html), along with the external apply_url, date_posted, company, and location. The federal_contractor flag is only available from search_jobs, not from the detail endpoint.
Coverage Notes
Scholarship data covers US-based and some international awards from high school through graduate level. Job postings reflect what is live on the National Labor Exchange at query time; postings that have expired on the source site return a not-found response from get_job_details. Pagination is 1-based via the page parameter, and the has_more boolean in both search responses indicates whether additional pages exist.
The CareerOneStop API is a managed, monitored endpoint for CareerOneStop.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when CareerOneStop.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 CareerOneStop.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?+
- Build a scholarship search tool filtered by study level and state for a college advising platform
- Aggregate internship and summer program listings by passing 'internship' or 'summer' as the keyword to search_scholarships
- Pull full award details — including deadline, funds, and how-to-apply text — via get_scholarship_details for a financial aid digest newsletter
- Find student-oriented job postings by searching search_jobs with keywords like 'intern' or 'part time' scoped to a specific ZIP code and radius
- Identify federal contractor job postings using the federal_contractor boolean returned by search_jobs
- Retrieve full job descriptions and apply URLs via get_job_details to populate a job board aggregator
- Track scholarship availability by study field using the focus and criteria fields from get_scholarship_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.