Official scripts
Explore our curated collection of scripts
Ashby: get company jobs
Fetch a company's live job postings from its public Ashby job board by hosted-jobs-page slug (jobs.ashbyhq.com/<slug>). Anonymous, no auth. Returns id, title, team name, location, workplaceType, employmentType and compensationTierSummary. Throws if the slug doesn't resolve to any organization.
Get Ashby job posting
Read one Ashby job posting (jobs.ashbyhq.com/<board>/<jobId>), description HTML included.
List job board postings
List every open position on an Ashby-hosted job board (jobs.ashbyhq.com/<board>).
Detect company's ATS (Greenhouse/Lever/Ashby)
Given a company's careers page URL, detect whether it's backed by Greenhouse, Lever, or Ashby and extract the board slug usable with greenhouse.io/get_company_jobs, lever.co/get_company_jobs, or ashbyhq.com/get_company_jobs. Detection combines two signals: network requests fired by the page (Greenhouse/Lever client-side API calls, seen e.g. on discord.com/careers) and embedded links to the ATS's own hosted board (seen e.g. on notion.com/careers linking jobs.ashbyhq.com/notion). Many companies fully proxy their ATS server-side with no client-visible signal (e.g. careers.airbnb.com, retool.com/careers) - for those this returns platform: null, which is a legitimate outcome, not a failure. Point this at the company's own marketing careers page, not at a guessed ATS URL: several large companies (e.g. Airbnb, Coinbase) configure their native Greenhouse board (boards.greenhouse.io/<slug>) to redirect to their custom-branded career site, which then also yields platform: null.
Search Dribbble jobs
Search Dribbble's job board by keyword, location and job type, returning title, company, location, posted date and url.
Search Behance jobs
Search Behance's job board (freelance briefs and full-time/contract listings) by keyword, returning title, company, location, remote status, job type, salary and url.
Search Himalayas remote jobs
Search Himalayas (himalayas.app) remote job listings by a free-text description of the desired role (e.g. "python developer in france", "senior product designer, remote worldwide") — the same single natural-language box the site's own UI exposes ("Describe your ideal remote job..."). Returns total (from the site's own job counter) and jobs (title, url, company, companyUrl, postedAgo, location, salary, tags). Paginates via the site's own page param (page=1 default, 20 results/page). An unrecognized query falls back to the full unfiltered listing (~100k+ jobs) rather than returning zero results — check the returned filtered flag (false when this fallback happened) rather than trusting total alone.
Search Upwork Jobs
Search Upwork's public job board by free-text query, returns structured job cards (title, description, budget, skills, experience level) for one results page.
Search SimplyHired jobs
Search SimplyHired (Indeed-owned aggregator) job listings, returning richer detail than the page cards show: title, company, location, salary, benefits, requirements, snippet, remote flag, sponsored flag, dateOnIndeed. Pagination is cursor-based (not page numbers) — pass the cursor token returned in a previous call's pageCursors to get subsequent pages. Invalid/unresolvable locations return 0 results (site's own behavior), not an error.
Search Monster jobs
Search Monster's US job listings by free-text keyword and optional free-text location (city/state, e.g. "Austin, TX"; omit for a nationwide/remote search). Drives Monster's own search-jobs API directly rather than the DOM — same request the site's search page fires, so it carries the same read-what-the-site-reads JobPosting data. Returns total (jobs on this page, max 18), estimatedTotal (site's own broader estimate across the full index) and jobs (jobId, title, company, location, remote, salary, currency, datePosted, url, applyUrl). Monster's client always searches with country fixed to "us" regardless of the location text typed — this mirrors monster.com's own site behavior (it is a US-market board); a non-US location (e.g. "Paris, France") is not rejected — Monster's own geocoding can silently match a same-named US place instead (e.g. resolving to Paris, Maine) and return results for that place, since the search is always scoped to the US index. Paginates via the site's own page param (page=1, 2, ...; 18 results/page) — a page beyond 1 re-derives Monster's continuation token internally to fetch the correct next slice; results may repeat sponsored/promoted listings across pages, matching the site's own behavior. A keyword with no matches returns total:0, jobs:[] — not an error.
Search HelloWork jobs
Search HelloWork's French job listings by keyword, optional free-text location, and page (30 offers/page). Returns total and jobs (jobId, title, company, url, location, contract, remoteTag, salary, superRecruiter, postedAgo). Salary and remote-work tags are only present when the listing/employer chose to show them, so they're frequently null.
Search XING Jobs
Search XING Jobs (German-speaking professional network) by free-text keyword and optional free-text location (city), via XING's own query-string job search rather than its natural-language "Tell the XING AI about the job you want" search box. Returns total (site's own counter, capped and displayed as "999+" for very broad queries - not an exact count past that point) and jobs (jobId, title, company, location, moreLocations, employmentType, salary, urgentlyHiring, postedAgo, postedAt, easyApply, sponsored, url). A few things to know: an unmatched keyword and/or an unresolvable location do not reliably produce a true zero-result signal via the total counter - XING can silently fall back to an unfiltered (or location-only-filtered) broad result set while still reporting a normal-looking "N jobs found", so total/location alone should not be trusted to detect a true no-match; an unresolvable location is silently dropped server-side to a nationwide search, same pattern as some other job boards. Pagination is reliable at its true boundary, though: once a page number goes past the site's actual result count, this script returns jobs:[] for a genuine "no matching jobs" state, ignoring that page's unrelated "jobs we found elsewhere" suggestions - those reuse the same card markup as real results but are not matches. Going further still (a page number far beyond any reasonable range) throws an explicit error instead of hanging. Some result cards are third-party syndicated listings (e.g. via jobware.de, jooble.org, meinestadt.de, heyjobs.co) rather than native XING job pages - these have sponsored:true, url pointing off-site, and jobId:null (no internal XING job id exists for them), which is the site's own real behavior, not a missing field. Pagination is 1-based via the site's own page param (page=1 default, 20 results/page).
Search WeWorkRemotely jobs
Search We Work Remotely two ways: `query` hits the site's own "Search everything" full-text search (leaner fields: no absolute date, just relative postedAgo, plus salaryRange/companyHeadquarters); `category` reads the RSS feed for one category or the combined feed (richer fields: region/country/state/skills/absolute pubDate, no free-text search). They're separate site affordances, not merged — query takes priority if both are given.
List ATS jobs
List jobs in the Welcome to the Jungle ATS by status. Returns jobs with id, name, reference, status, pipeline stages, and candidate counts (new/inProcess/refused). reference is the join key for list_candidates.
Search Wizbii jobs
Searches job listings on jobs.wizbii.com by filtering by business domain (slug required, e.g. developpement-informatique, marketing, ventes — full list at wizbii.com/directory/lp/domaine) and optionally by city (slug, e.g. paris, lyon — list at wizbii.com/directory/lp/ville). No free-text keyword search: the site only exposes this category×city filter. Returns the site's own richer listing data for each result. An invalid domain or city throws explicitly rather than returning an empty page. 1-based pagination, matching the site's own URL.
Search StepStone (Germany) jobs
Search StepStone.de's German job listings by free-text keyword and optional free-text location. Returns total and jobs (id, title, url, company, companyUrl, location, salary, workFromHome, datePosted, snippet, quickApply). Pagination is 1-based (arg page), 25 results per page. Both an unmatched keyword and an unrecognized location legitimately return total:0, jobs:[] — StepStone's own location matching is strict (no silent nationwide fallback), so this is a real empty result, not a coerced one.
Search Free-Work jobs
Searches job listings on free-work.com (IT/freelance), usable without logging in. `query` is a free-text keyword; `location` is a free-text city, resolved to the closest match — unresolved locations throw explicitly rather than silently searching everywhere. Defaults to searching all of France when no location is given. Returns title, full description, company, contract types, experience level, remote work, salaries (daily/annual), currency, skills, publish date, and URL. 1-based pagination, 16 results per page. One thing to check: requesting a page beyond the real number of pages doesn't return an empty result — it silently repeats the first page — so verify against `totalItems` before trusting a high page number.
Greenhouse: get company jobs
Fetch a company's live job postings from Greenhouse's public board API by board slug (boards.greenhouse.io/<slug>). Anonymous, no auth. Returns id, title, location, department(s), url, updatedAt, firstPublished. Throws (job board not found) if the slug isn't a Greenhouse customer.
Search Meteojob jobs
Search Meteojob's French job listings by free-text keyword and optional free-text location. Location text is validated before being used in the search — an unrecognized location raises an error rather than silently falling back to a nationwide search. Returns total and jobs (id, title, url, company, location, contractType, jobType, telework, salary, skills, publishedAt, highlight). Pagination is 1-based (20 results per page, matching the site's own page size). An unmatched keyword returns total:0, jobs:[] — not an error. Salary is the site's own free-text display string (e.g. "50 000 € - 60 000 € par an") since offers price ranges inconsistently (annual/hourly/monthly, disclosed or not).
Search Built In jobs
Search Built In (builtin.com) tech/startup job listings by free-text keyword and optional free-text location (city). Returns id, title, url, company, companyUrl, postedAgo, remoteType (Remote/Hybrid/In-Office wording as shown), locations (array — cards with several offices list each one), salary (raw site text, e.g. "180K-201K Annually" — not split into min/max since the site itself only shows a range string, sometimes absent when undisclosed), seniority, industries (array), description, topSkills (array). Paginates via the site's own page param (page=1 default, 25 results/page); the reported last page reflects the true total, not just the current page's count. A query/location with no matches returns jobs:[] — not an error.
Search Jooble jobs
Searches job listings on jooble.org (global/US, English UI) by driving the site's own search form (keyword + city) and reading the results it returns. Dismisses the cookie-consent banner if present. Pagination beyond the first page is loaded via progressive scroll, matching the site's own infinite-scroll behavior. One thing to be aware of: Jooble is sensitive to request rate and can temporarily block rapid repeated searches within a short window; if a search fails, space out retries rather than repeating it immediately.
Search Wellfound jobs
Search Wellfound (AngelList Talent) startup job listings by role keyword, with optional city location (omit for remote-only). Returns total, page, totalPages, and jobs (jobId, title, url, company, companyUrl, jobType, compensation, location, experience, postedAgo). Wellfound's own search box is a fixed-taxonomy combobox with no free-text server filtering, so this drives its role/location landing pages instead (/role/r/<role> for remote, /role/l/<role>/<location> otherwise) by slugifying the query/location. If Wellfound doesn't recognize the resulting slug it silently redirects to a broad fallback page (e.g. all-roles-remote) instead of erroring — the script detects that redirect and throws instead of returning unrelated jobs. The header's reported total can exceed the number of job rows actually rendered on the page (observed on small result sets); no further pages/lazy-load recovers the gap.
Search talent.com jobs
Search talent.com's aggregated job listings by free-text keyword and optional free-text location (city/region; omit for a broad/geo-default search). Returns richer job data (salary, company, remote flag, job type, description) than what's shown on the page, read directly from the page's own underlying data rather than scraped visually — more stable against markup changes. Paginates via the site's own page param (page=1 default, ~18-20 results/page); no total-count field is exposed anywhere, so callers must page until an empty array comes back. Location text is matched loosely against talent.com's own place index (e.g. "paris" can resolve to Paris, TX, US rather than Paris, France) — this mirrors the site's own search box behavior, not an added restriction. A query with no matches returns jobs:[] — not an error.
Search Glassdoor jobs
Search Glassdoor job listings by keyword and optional free-text location (city). Returns total and jobs (jobId, title, url, company, rating, location, salary, snippet, postedAgo) for the first results page (~30 listings — Glassdoor's pagination is a JS "load more" action, not a URL param, and was observed to break the page outright on click, so only page 1 is supported here). Location is resolved via Glassdoor's own place-autocomplete, preferring the first city-level match, because the top overall suggestion can be a broader state or region record that Glassdoor then silently fails to filter by; an unrecognized or non-filtering location throws. Glassdoor serves the UI (and some listing labels like the skills line) in whatever language/locale it geo-resolves the session to, independent of the job's own country — text fields may not be in English or in the language of the job itself. Distinct from the existing search_companies/get_company scripts, which cover company profiles and reviews, not job postings.
Lever: get company jobs
Fetch a company's live job postings from Lever's public postings API by board slug (jobs.lever.co/<slug>). Anonymous, no auth. Returns id, title, team, location(s), commitment, url, createdAt. Empty array if the company posts nothing right now; throws only on a genuine API error (not on "no jobs").
