[← Back to tools]
serp.jobs

Search Google Jobs: pay per use, no API key

Use SerpApi from Claude, Claude Code, Cursor, ChatGPT, and other agents through one Cralo balance.

Return Google Jobs postings with companies, locations, salaries, and apply links through SerpApi. An empty jobs list is a successful no-match, not an error.

Price and execution

Price
$0.025
Pricing model
Fixed price per successful call
Execution class
fast

Limits

No additional limits are published for this tool.

Parameters

Fields serp.jobs accepts as JSON input.

  • limitintegerOptional

    Maximum number of records to return.

  • querystringRequired

    Job-search terms, such as role, skills, or employer.

  • countrystringOptional

    Two-letter Google Jobs market. Defaults to `us`. Use `fr` for France, `gb` for the UK, and so on.

  • languagestringOptional

    Two-letter language code for job results.

  • locationstringOptional

    Where to search, such as a city, region, or country. Match the employer's market (for example `Paris, France`). Do not default to the United States for non-US employers. `remote`, `worldwide`, and `anywhere` are accepted, then omitted before calling Google Jobs, which does not support them as a location.

Raw input JSON Schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum number of records to return."
    },
    "query": {
      "type": "string",
      "maxLength": 1000,
      "minLength": 1,
      "description": "Job-search terms, such as role, skills, or employer."
    },
    "country": {
      "type": "string",
      "default": "us",
      "pattern": "^[A-Za-z]{2}
quot;, "description": "Two-letter Google Jobs market. Defaults to `us`. Use `fr` for France, `gb` for the UK, and so on." }, "language": { "type": "string", "default": "en", "pattern": "^[A-Za-z]{2}
quot;, "description": "Two-letter language code for job results." }, "location": { "type": "string", "maxLength": 255, "minLength": 1, "description": "Where to search, such as a city, region, or country. Match the employer's market (for example `Paris, France`). Do not default to the United States for non-US employers. `remote`, `worldwide`, and `anywhere` are accepted, then omitted before calling Google Jobs, which does not support them as a location." } }, "additionalProperties": false }

Returns

Fields a successful serp.jobs call returns.

  • jobsarray of objectRequired
    • viastring | nullRequired
    • titlestringRequired
    • job_idstring | nullRequired
    • salarystring | nullRequired
    • locationstring | nullRequired
    • posted_atstring | nullRequired
    • apply_linkstring | nullRequired

      HTTP(S) apply URL when Google Jobs provided one. Null when missing or not a valid web URL.

    • descriptionstring | nullRequired
    • company_namestring | nullRequired
    • schedule_typestring | nullRequired
  • querystringRequired
  • countrystringRequired

    Two-letter Google Jobs market used for the search.

  • messagestring | nullRequired

    Set when no postings matched, or when Remote/worldwide/anywhere was omitted because Google Jobs does not accept that location. Can be set even when jobs were returned. Null when there is nothing extra to tell the caller.

  • locationstring | nullRequired

    Location sent to Google Jobs, or null if omitted.

  • search_idstringRequired
  • retrieved_atstring (date-time)Required
Raw output JSON Schema
{
  "type": "object",
  "required": [
    "query",
    "location",
    "country",
    "jobs",
    "message",
    "search_id",
    "retrieved_at"
  ],
  "properties": {
    "jobs": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "job_id",
          "title",
          "company_name",
          "location",
          "via",
          "description",
          "posted_at",
          "schedule_type",
          "salary",
          "apply_link"
        ],
        "properties": {
          "via": {
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "type": "string"
          },
          "job_id": {
            "type": [
              "string",
              "null"
            ]
          },
          "salary": {
            "type": [
              "string",
              "null"
            ]
          },
          "location": {
            "type": [
              "string",
              "null"
            ]
          },
          "posted_at": {
            "type": [
              "string",
              "null"
            ]
          },
          "apply_link": {
            "type": [
              "string",
              "null"
            ],
            "description": "HTTP(S) apply URL when Google Jobs provided one. Null when missing or not a valid web URL."
          },
          "description": {
            "type": [
              "string",
              "null"
            ]
          },
          "company_name": {
            "type": [
              "string",
              "null"
            ]
          },
          "schedule_type": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "additionalProperties": false
      },
      "maxItems": 100
    },
    "query": {
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "Two-letter Google Jobs market used for the search."
    },
    "message": {
      "type": [
        "string",
        "null"
      ],
      "description": "Set when no postings matched, or when Remote/worldwide/anywhere was omitted because Google Jobs does not accept that location. Can be set even when jobs were returned. Null when there is nothing extra to tell the caller."
    },
    "location": {
      "type": [
        "string",
        "null"
      ],
      "description": "Location sent to Google Jobs, or null if omitted."
    },
    "search_id": {
      "type": "string"
    },
    "retrieved_at": {
      "type": "string",
      "format": "date-time"
    }
  },
  "additionalProperties": false
}

Run this tool

Copy this instruction to your agent to set up Cralo and call this tool with the example input.

Set up Cralo by following https://cralo.ai/SKILL.md, then call the serp.jobs tool with this input: {"query":"developer advocate","location":"United States","country":"us","language":"en"}

Safety notes

Side Effect
read_only
Public Sources Only
Yes

How this compares to using SerpApi directly

You do not need a separate SerpApi account or subscription for this call. Cralo uses one prepaid balance across all tools and shows the per-call price before you run the command.

Related tools

[Browse all tools]