Jobs

Search active job postings

Paginated keyword + faceted search across all active job postings. Filters compose with AND semantics. Returns up to per_page Job documents per call. Filter values are escaped against Solr injection before query construction. Empty q matches everything (subject to the active campaign filter — only jobs with live sponsor budget are eligible). Results are DEDUPLICATED: the same job appearing across multiple feeds is collapsed to a single result (the highest-paying instance), so total and the rows reflect distinct jobs, not raw postings. NOTE: on API-key (publisher) responses the Job id is an opaque, stable token and jobid / job_provider_id are omitted (internal identifiers are not exposed); signed first-party responses carry the raw id + those fields.

get/api/v1/jobs/search

Request

  • Base URL: https://api.juju.com
  • URL: https://api.juju.com/api/v1/jobs/search
  • Auth: none declared

Query parameters

qstring

Keyword. Escaped before Solr — special characters are safe.

citystring

City to search near. By default this runs as a RADIUS around the city (api.default_radius_miles, >= 25 mi) — returning the surrounding metro, case-insensitively — not an exact city-name match. Pass an explicit radius to override.

statestring

Exact-match state filter (full name or 2-letter code, depending on indexed data).

postalstring

Postal code to search near. Like city, defaults to a radius search (api.default_radius_miles, >= 25 mi) unless an explicit radius is given.

countrystring

Exact-match country filter (e.g. US).

remoteboolean

true|false. Filters by the is_remote field. Omit for no filter.

categorystring

Category filter (exact match on indexed category).

jobgroupstring

Job group filter (exact match).

work_typestring

Work-type filter (exact match).

jobgroupidinteger

Numeric detailed O*NET occupation id (jobgroupid). Granular — prefer major_group_id for a category filter.

major_group_idinteger

O*NET major-group id (the 23-value taxonomy from /lookups job_groups). The canonical, controlled category filter — prefer this over the free-text category.

provider_idinteger

Numeric job provider id. Scopes results to one sponsor.

salary_minnumber double

Lower bound on salary_avg (inclusive).

salary_maxnumber double

Upper bound on salary_avg (inclusive).

cpc_minnumber double

Lower bound on cpc.

cpc_maxnumber double

Upper bound on cpc.

sortstring

Field + direction, e.g. date_posted desc. Allowed fields: date_posted, date_indexed, cpc, salary_avg. Anything else is silently ignored (relevance scoring is the default).

posted_withininteger

Recency filter (days). Only jobs posted within the last N days (clamped 1-365).

radiusnumber

Radius (miles) around a resolved anchor named by postal OR (city + optionally state). OPTIONAL — a city/postal search already runs at the default radius (api.default_radius_miles, >= 25 mi); pass this to override it. When a radius is in effect, city / postal act as the anchor rather than exact-match filters. An unresolvable anchor falls back to an exact filter (search still runs).

pageinteger

1-indexed page number (clamped to >= 1). Results past api.search_max_window — i.e. (page-1)*per_page at or beyond that window — are rejected with 400; page through the first N matches only. Use the syndication feed for bulk retrieval.

per_pageinteger

Results per page. Clamped server-side to api.per_page_max (50).

format'json' | 'xml'

Response serialization. json (default) or xml. XML returns the SAME envelope with Content-Type application/xml: <response><data><job>…</job></data><meta>…</meta><errors/></response>. HTML-bearing fields (e.g. description) are CDATA-wrapped; facet-bucket values that are not valid XML tag names are emitted as <entry key="…">. This XML option exists only on the public publisher endpoints (api.juju.com).

Response

Successful search. data is an array of Job documents (possibly empty); meta carries pagination and facet rollups.

errorsstring[] required

Empty array on success. On failure, human-readable error strings suitable for surfacing to end users.

Example response

{
  "data": [
    {
      "id": "2LKlPuMKB6P6-mivzB8Cuw",
      "jobid": "141096464",
      "job_provider_id": 2,
      "title": "CDL-A Truck Drivers - Earn $1,400 Weekly",
      "company": "Hogan Transportation",
      "click_url": "https://jobs.juju.com/jobs/click/abc123def456...",
      "payout": "0.4200",
      "city": "Rueter",
      "state": "Missouri",
      "state_code": "MO",
      "postal": "65744",
      "country": "US",
      "latitude": 36.6,
      "longitude": -92.86,
      "geo_location": "36.600000,-92.860000",
      "salary_low": 1400,
      "salary_high": 1400,
      "salary_avg": 1400,
      "salary_type": "week",
      "currency": "USD",
      "work_type": "Full Time",
      "category": [
        "Driving and Transport"
      ],
      "subcategory": [
        "Truck Driver"
      ]
    }
  ],
  "meta": {
    "total": 64,
    "page": 1,
    "per_page": 10,
    "total_pages": 7,
    "facets": {
      "state": {
        "California": 17,
        "Idaho": 14
      }
    }
  },
  "errors": []
}

Changes

No recorded changes to this operation across all 1 revision of this API.