{
  "openapi": "3.1.0",
  "x-zeroclick-navigation": {
    "fullSpec": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json",
    "services": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/services",
    "serviceSpecTemplate": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/services/{slug}/openapi.json",
    "searchTemplate": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json?q={text}",
    "operationTemplate": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json?path={path}&method={method}",
    "firstPage": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json?page=1",
    "instructions": [
      "Use this spec if it contains the operation and details you need. Otherwise, search or open a relevant service spec using the links below.",
      "Find service slugs in x-zeroclick-services or x-payment-info.rates[].service; use them in serviceSpecTemplate, never as request values.",
      "URL-encode template values. Search is ranked; service, path, and method filters are exact. Filters combine.",
      "Pages contain up to 10 operations; follow info.x-next or the Link header if you need more results. Shared operations retain all selector values."
    ]
  },
  "info": {
    "title": "OpenWeb Ninja",
    "version": "1.0.0",
    "description": "OpenWeb Ninja returns real-time public web data as JSON: Google search results and AI answers, local business listings and reviews from Google Maps and Yelp, job postings and salaries from LinkedIn, Indeed, Glassdoor, ZipRecruiter and Monster, product data from Amazon, Walmart, eBay, Costco, Wayfair and Home Depot, property listings from Zillow and Redfin, stock and currency data, news, events, images and videos. Each API is a service with its own routes, and each call is one request. This server is a transparent proxy in front of OpenWeb Ninja's own API that sells access on plans (credit or subscription) rather than per call: it handles identity, payment, and proxying. Agents can purchase autonomously or with their human's approval. The complete verified paid surface is listed at /openapi.json, the source of truth for available operations. Each operation here carries its pricing in x-payment-info. Use the operations and details here when they meet your needs. Filtered specs contain only matching operations; if you cannot find what you need here, use search or the service catalog. The live catalog at /manifest.json is authoritative for prices and any free included units (prices[].includedUnits) - some meters include free usage per account before any charge, reserved for agents claimed by a human with a verified email.",
    "contact": {
      "email": "support@openwebninja.com"
    },
    "x-guidance": "This is a filtered API reference. Request and response schemas are preserved. Shared operations retain selector values and prices for all their services; service slugs are pricing labels, never request values. If this spec lacks what you need, use the navigation links to search or open a relevant service spec."
  },
  "x-service-info": {
    "docs": {
      "homepage": "https://www.openwebninja.com",
      "apiReference": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json",
      "llms": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/llms.txt"
    }
  },
  "externalDocs": {
    "url": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/llms-full.txt",
    "description": "How to authenticate, pay, and call this API; links the upstream API reference."
  },
  "servers": [
    {
      "url": "https://agents.openwebninja.com/zcj/v8c3szxamb6i",
      "description": "Plan-based access to OpenWeb Ninja's API"
    }
  ],
  "security": [
    {
      "planAccess": []
    }
  ],
  "components": {
    "securitySchemes": {
      "planAccess": {
        "type": "http",
        "scheme": "bearer",
        "description": "Plan access. Calls are sold on plans (credit or subscription), not per call: an unidentified call returns 401 bearer_required with a registration recipe, and an identified call with no covering plan returns 403 plan_required listing the plans that cover it. Reuse your existing agent identity; register only if new (anonymous registration is one free API call; the recipe is at https://agents.openwebninja.com/zcj/v8c3szxamb6i/auth.md), buy a plan at POST https://agents.openwebninja.com/zcj/v8c3szxamb6i/plans/{planId}/purchase (its priced 402 settles with a supported payment method - x402 or MPP today - or by card), then retry with the access token as Authorization: Bearer <token>. No upstream API key is needed."
      },
      "sellerAgentX402": {
        "type": "apiKey",
        "in": "header",
        "name": "Payment-Signature",
        "description": "Signed $0 x402 proof from the 402 challenge"
      },
      "sellerAgentMpp": {
        "type": "http",
        "scheme": "Payment",
        "description": "Signed $0 MPP proof from the 402 challenge"
      }
    }
  },
  "paths": {
    "/jsearch/company-job-salary": {
      "get": {
        "summary": "Company Job Salary",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "request_id",
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "company",
                          "job_title",
                          "salary_period",
                          "salary_currency"
                        ],
                        "properties": {
                          "company": {
                            "type": "string",
                            "description": "Company name the salary estimate applies to."
                          },
                          "location": {
                            "type": "string",
                            "nullable": true,
                            "description": "Location the salary estimate applies to."
                          },
                          "job_title": {
                            "type": "string",
                            "description": "Job title the salary estimate applies to."
                          },
                          "confidence": {
                            "type": "string",
                            "nullable": true,
                            "description": "Confidence level of the estimate. Values: CONFIDENT, NOT_CONFIDENT."
                          },
                          "max_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "Maximum total salary reported for this job."
                          },
                          "min_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "Minimum total salary reported for this job."
                          },
                          "salary_count": {
                            "type": "integer",
                            "nullable": true,
                            "description": "Number of underlying salary data points used to compute the estimate."
                          },
                          "median_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "Median total salary reported for this job."
                          },
                          "salary_period": {
                            "type": "string",
                            "description": "Period of the salary. Values: HOUR, DAY, WEEK, MONTH, YEAR."
                          },
                          "max_base_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "Maximum base salary portion of the total compensation."
                          },
                          "min_base_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "Minimum base salary portion of the total compensation."
                          },
                          "salary_currency": {
                            "type": "string",
                            "description": "ISO 4217 currency code of the salary."
                          },
                          "max_additional_pay": {
                            "type": "number",
                            "nullable": true,
                            "description": "Maximum additional pay reported (bonuses, stock, etc.)."
                          },
                          "median_base_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "Median base salary for the job title."
                          },
                          "min_additional_pay": {
                            "type": "number",
                            "nullable": true,
                            "description": "Minimum additional pay reported (bonuses, stock, etc.)."
                          },
                          "median_additional_pay": {
                            "type": "number",
                            "nullable": true,
                            "description": "Median additional pay for the job title."
                          }
                        }
                      },
                      "description": "Array of salary estimate entries for the requested company and job title (empty if no data is available)."
                    },
                    "status": {
                      "type": "string",
                      "description": "The status of the API response."
                    },
                    "request_id": {
                      "type": "string",
                      "description": "A unique ID to trace the API request."
                    }
                  }
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "description": "Agent identity credential required: register once, then retry with Authorization: Bearer <token>."
          },
          "403": {
            "description": "No active plan covers this call; the body lists the plans that do. Buy one with your bearer, then retry."
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "company",
            "schema": {
              "type": "string",
              "example": "Amazon"
            },
            "example": "Amazon",
            "required": true,
            "description": "The company name for which to get salary information (e.g. Amazon)."
          },
          {
            "in": "query",
            "name": "job_title",
            "schema": {
              "type": "string",
              "example": "software developer"
            },
            "example": "software developer",
            "required": true,
            "description": "Job title for which to get salary estimation."
          },
          {
            "in": "query",
            "name": "location",
            "schema": {
              "type": "string"
            },
            "description": "Free-text location/area in which to get salary estimation."
          },
          {
            "in": "query",
            "name": "location_type",
            "schema": {
              "enum": [
                "ANY",
                "CITY",
                "STATE",
                "COUNTRY"
              ],
              "type": "string",
              "default": "ANY"
            },
            "description": "Specify the type of the location you are looking to get salary estimation for additional accuracy."
          },
          {
            "in": "query",
            "name": "years_of_experience",
            "schema": {
              "enum": [
                "ALL",
                "LESS_THAN_ONE",
                "ONE_TO_THREE",
                "FOUR_TO_SIX",
                "SEVEN_TO_NINE",
                "TEN_TO_FOURTEEN",
                "ABOVE_FIFTEEN"
              ],
              "type": "string",
              "default": "ALL"
            },
            "description": "Get job estimation for a specific experience level range (years)."
          }
        ],
        "description": "Get estimated job salaries/pay in a specific company by job title and optionally a location and experience level in years.",
        "operationId": "jsearch__get__company_job_salary",
        "x-zeroclick-document-sources": [
          {
            "gaps": [],
            "pages": [],
            "sourceId": "sds_L_Fsr74jXxRwFrRFUiukT",
            "authority": "official",
            "conflicts": [],
            "revisionId": "sdrn_HdbhVfuBqBhlSPOka23bU"
          }
        ],
        "x-zeroclick-services": [
          "jsearch"
        ],
        "x-payment-info": {
          "access": "plan",
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.030000"
          },
          "rates": [
            {
              "service": "jsearch",
              "meter": "requests",
              "unit": "request",
              "unitSize": 10,
              "priceUsd": "0.030000",
              "includedUnits": 0
            }
          ],
          "perCallUsage": [
            {
              "service": "jsearch",
              "meter": "requests",
              "quantity": 1
            }
          ]
        },
        "security": [
          {
            "planAccess": []
          }
        ]
      }
    },
    "/jsearch/estimated-salary": {
      "get": {
        "summary": "Job Salary",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "request_id",
                    "parameters",
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "location",
                          "job_title",
                          "salary_period",
                          "salary_currency"
                        ],
                        "properties": {
                          "location": {
                            "type": "string",
                            "description": "The location the salary estimate applies to."
                          },
                          "job_title": {
                            "type": "string",
                            "description": "The job title the salary estimate applies to."
                          },
                          "confidence": {
                            "type": "string",
                            "nullable": true,
                            "description": "Confidence level of the estimate. Values: CONFIDENT, NOT_CONFIDENT."
                          },
                          "max_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "The maximum total salary reported."
                          },
                          "min_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "The minimum total salary reported."
                          },
                          "salary_count": {
                            "type": "integer",
                            "nullable": true,
                            "description": "Number of underlying salary data points used to compute the estimate."
                          },
                          "median_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "The median total salary reported."
                          },
                          "salary_period": {
                            "type": "string",
                            "description": "Period of the salary. Values: HOUR, DAY, WEEK, MONTH, YEAR."
                          },
                          "publisher_link": {
                            "type": "string",
                            "nullable": true,
                            "description": "URL to the salary data on the publisher."
                          },
                          "publisher_name": {
                            "type": "string",
                            "description": "Name of the salary data publisher (e.g. Glassdoor)."
                          },
                          "max_base_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "The maximum base salary reported."
                          },
                          "min_base_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "The minimum base salary reported."
                          },
                          "salary_currency": {
                            "type": "string",
                            "description": "ISO 4217 currency code of the salary."
                          },
                          "max_additional_pay": {
                            "type": "number",
                            "nullable": true,
                            "description": "The maximum additional compensation reported (bonuses, stock, etc.)."
                          },
                          "median_base_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "The median base salary reported."
                          },
                          "min_additional_pay": {
                            "type": "number",
                            "nullable": true,
                            "description": "The minimum additional compensation reported (bonuses, stock, etc.)."
                          },
                          "salaries_updated_at": {
                            "type": "string",
                            "nullable": true,
                            "description": "ISO 8601 UTC datetime of when the underlying salary data was last refreshed."
                          },
                          "median_additional_pay": {
                            "type": "number",
                            "nullable": true,
                            "description": "The median additional compensation reported (bonuses, stock, etc.)."
                          }
                        }
                      },
                      "description": "Array of salary estimate entries (one per matched location/publisher)."
                    },
                    "status": {
                      "type": "string",
                      "description": "The status of the API response."
                    },
                    "parameters": {
                      "type": "object",
                      "properties": {
                        "location": {
                          "type": "string",
                          "description": "The location as received."
                        },
                        "job_title": {
                          "type": "string",
                          "description": "The job title as received."
                        },
                        "location_type": {
                          "type": "string",
                          "description": "Location type as received. Values: ANY, CITY, STATE, COUNTRY."
                        },
                        "years_of_experience": {
                          "type": "string",
                          "nullable": true,
                          "description": "Years-of-experience filter as received. Values: ALL, LESS_THAN_ONE, ONE_TO_THREE, FOUR_TO_SIX, SEVEN_TO_NINE, TEN_TO_FOURTEEN, ABOVE_FIFTEEN."
                        }
                      },
                      "description": "The parameters the API received and used for this request, echoed back."
                    },
                    "request_id": {
                      "type": "string",
                      "description": "A unique ID to trace the API request."
                    }
                  }
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "description": "Agent identity credential required: register once, then retry with Authorization: Bearer <token>."
          },
          "403": {
            "description": "No active plan covers this call; the body lists the plans that do. Buy one with your bearer, then retry."
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "job_title",
            "schema": {
              "type": "string",
              "example": "nodejs developer"
            },
            "example": "nodejs developer",
            "required": true,
            "description": "Job title for which to get salary estimation."
          },
          {
            "in": "query",
            "name": "location",
            "schema": {
              "type": "string",
              "example": "new york"
            },
            "example": "new york",
            "required": true,
            "description": "Location in which to get salary estimation."
          },
          {
            "in": "query",
            "name": "location_type",
            "schema": {
              "enum": [
                "ANY",
                "CITY",
                "STATE",
                "COUNTRY"
              ],
              "type": "string",
              "default": "ANY"
            },
            "description": "Specify the type of the location you are looking to get salary estimation for additional accuracy."
          },
          {
            "in": "query",
            "name": "years_of_experience",
            "schema": {
              "enum": [
                "ALL",
                "LESS_THAN_ONE",
                "ONE_TO_THREE",
                "FOUR_TO_SIX",
                "SEVEN_TO_NINE",
                "TEN_TO_FOURTEEN",
                "ABOVE_FIFTEEN"
              ],
              "type": "string",
              "default": "ALL"
            },
            "description": "Get job estimation for a specific experience level range (years)."
          },
          {
            "in": "query",
            "name": "fields",
            "schema": {
              "type": "string"
            },
            "description": "A comma separated list of job salary fields to include in the response (field projection).  \n  By default all fields are returned."
          }
        ],
        "description": "Get estimated salaries / pay for a jobs around a location by job title and location.  \n  The salary estimation is returned for several periods, depending on data availability / relevance, and includes:  hourly, daily, weekly, monthly, or yearly.",
        "operationId": "jsearch__get__estimated_salary",
        "x-zeroclick-document-sources": [
          {
            "gaps": [],
            "pages": [],
            "sourceId": "sds_L_Fsr74jXxRwFrRFUiukT",
            "authority": "official",
            "conflicts": [],
            "revisionId": "sdrn_HdbhVfuBqBhlSPOka23bU"
          }
        ],
        "x-zeroclick-services": [
          "jsearch"
        ],
        "x-payment-info": {
          "access": "plan",
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.030000"
          },
          "rates": [
            {
              "service": "jsearch",
              "meter": "requests",
              "unit": "request",
              "unitSize": 10,
              "priceUsd": "0.030000",
              "includedUnits": 0
            }
          ],
          "perCallUsage": [
            {
              "service": "jsearch",
              "meter": "requests",
              "quantity": 1
            }
          ]
        },
        "security": [
          {
            "planAccess": []
          }
        ]
      }
    },
    "/jsearch/job-details": {
      "get": {
        "summary": "Job Details",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "request_id",
                    "parameters",
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "required": [
                          "job_id",
                          "job_title",
                          "employer_name",
                          "job_publisher",
                          "job_apply_link"
                        ],
                        "properties": {
                          "job_id": {
                            "type": "string",
                            "description": "The unique identifier of the job listing."
                          },
                          "industry": {
                            "type": "string",
                            "nullable": true,
                            "description": "Industry or domain of the employer, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_city": {
                            "type": "string",
                            "nullable": true,
                            "description": "City where the job is located."
                          },
                          "job_state": {
                            "type": "string",
                            "nullable": true,
                            "description": "State or province of the job location."
                          },
                          "job_title": {
                            "type": "string",
                            "description": "The title or position name of the job."
                          },
                          "job_salary": {
                            "type": "string",
                            "nullable": true,
                            "description": "Free-form salary description string as published."
                          },
                          "start_date": {
                            "type": "string",
                            "nullable": true,
                            "description": "Expected start date if specified, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_country": {
                            "type": "string",
                            "nullable": true,
                            "description": "ISO 3166-1 alpha-2 country code of the job location."
                          },
                          "soft_skills": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "description": "Soft skills mentioned in the job posting, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_benefits": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "description": "Normalized benefit codes detected in the listing (e.g. health_insurance, dental_coverage, paid_time_off, retirement_savings)."
                          },
                          "job_function": {
                            "type": "string",
                            "nullable": true,
                            "description": "Technical function category of the role, extracted via AI enrichment (?enrich=true). Values: backend, frontend, full-stack, mobile, devops, data-engineering, ml-ai, systems, qa, security, other."
                          },
                          "job_latitude": {
                            "type": "number",
                            "nullable": true,
                            "description": "Latitude of the job location."
                          },
                          "job_location": {
                            "type": "string",
                            "nullable": true,
                            "description": "Full location string of the job (e.g. 'San Francisco, CA')."
                          },
                          "job_onet_soc": {
                            "type": "string",
                            "nullable": true,
                            "description": "The O*NET SOC code for the job occupation."
                          },
                          "apply_options": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "required": [
                                "apply_link",
                                "publisher"
                              ],
                              "properties": {
                                "is_direct": {
                                  "type": "boolean",
                                  "description": "True if the apply link goes directly to the employer's careers site."
                                },
                                "publisher": {
                                  "type": "string",
                                  "description": "Name of the publisher hosting this apply link."
                                },
                                "apply_link": {
                                  "type": "string",
                                  "description": "Apply URL on this publisher."
                                }
                              }
                            },
                            "description": "Alternative apply links from other publishers."
                          },
                          "employer_logo": {
                            "type": "string",
                            "nullable": true,
                            "description": "The URL of the employer's logo image."
                          },
                          "employer_name": {
                            "type": "string",
                            "description": "The name of the company posting the job."
                          },
                          "job_is_remote": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "True if the job is fully remote."
                          },
                          "job_longitude": {
                            "type": "number",
                            "nullable": true,
                            "description": "Longitude of the job location."
                          },
                          "job_posted_at": {
                            "type": "string",
                            "nullable": true,
                            "description": "Relative posting time (e.g. '3 days ago')."
                          },
                          "job_publisher": {
                            "type": "string",
                            "description": "The platform or site that published the job."
                          },
                          "methodologies": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "description": "Development methodologies mentioned, extracted via AI enrichment (?enrich=true)."
                          },
                          "ai_ml_involved": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "Whether the role involves AI/ML work, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_apply_link": {
                            "type": "string",
                            "description": "The primary link to apply for the job."
                          },
                          "job_highlights": {
                            "type": "object",
                            "description": "Bulleted highlights extracted from the listing. Keys typically include 'Qualifications', 'Responsibilities', 'Benefits'. Each value is an array of bullet strings.",
                            "additionalProperties": {
                              "type": "array",
                              "items": {
                                "type": "string"
                              }
                            }
                          },
                          "job_max_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "Maximum salary parsed from the listing."
                          },
                          "job_min_salary": {
                            "type": "number",
                            "nullable": true,
                            "description": "Minimum salary parsed from the listing."
                          },
                          "job_description": {
                            "type": "string",
                            "nullable": true,
                            "description": "A detailed description of the job posting."
                          },
                          "job_google_link": {
                            "type": "string",
                            "nullable": true,
                            "description": "A link to the job's Google for Jobs detail panel."
                          },
                          "seniority_level": {
                            "type": "string",
                            "nullable": true,
                            "description": "Seniority level extracted via AI enrichment (?enrich=true). Values: entry, mid, senior, principal, lead, manager."
                          },
                          "employer_reviews": {
                            "type": "array",
                            "items": {
                              "type": "object",
                              "properties": {
                                "score": {
                                  "type": "number",
                                  "description": "Average review score on this publisher."
                                },
                                "max_score": {
                                  "type": "number",
                                  "description": "Maximum score on the publisher's scale."
                                },
                                "num_stars": {
                                  "type": "number",
                                  "description": "Star rating (typically 0-5, possibly fractional)."
                                },
                                "publisher": {
                                  "type": "string",
                                  "description": "Name of the review publisher (e.g. Indeed, Glassdoor)."
                                },
                                "review_count": {
                                  "type": "integer",
                                  "description": "Total number of reviews on this publisher."
                                },
                                "reviews_link": {
                                  "type": "string",
                                  "description": "URL to the publisher's reviews page for this employer."
                                },
                                "employer_name": {
                                  "type": "string",
                                  "description": "Employer name as it appears on the publisher."
                                }
                              }
                            },
                            "nullable": true,
                            "description": "Aggregated employer review summaries from third-party publishers. Present when available."
                          },
                          "employer_website": {
                            "type": "string",
                            "nullable": true,
                            "description": "The official website of the employer."
                          },
                          "visa_sponsorship": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "Whether visa sponsorship is offered, extracted via AI enrichment (?enrich=true)."
                          },
                          "work_arrangement": {
                            "type": "string",
                            "nullable": true,
                            "description": "Work arrangement extracted via AI enrichment (?enrich=true). Values: onsite, remote, hybrid."
                          },
                          "benefits_extended": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "description": "Extended benefits list extracted from job description via AI enrichment (?enrich=true)."
                          },
                          "contract_duration": {
                            "type": "string",
                            "nullable": true,
                            "description": "Duration of contract for contract roles, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_onet_job_zone": {
                            "type": "string",
                            "nullable": true,
                            "description": "The O*NET job zone classification (1-5) indicating preparation level required."
                          },
                          "job_salary_period": {
                            "type": "string",
                            "nullable": true,
                            "description": "Period of the salary. Values: HOUR, DAY, WEEK, MONTH, YEAR."
                          },
                          "education_required": {
                            "type": "object",
                            "nullable": true,
                            "properties": {
                              "field": {
                                "type": "string",
                                "nullable": true,
                                "description": "Required field of study."
                              },
                              "level": {
                                "type": "string",
                                "nullable": true,
                                "description": "Required degree level (e.g. bachelor, master, phd)."
                              }
                            },
                            "description": "Required education level and field, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_apply_is_direct": {
                            "type": "boolean",
                            "description": "Indicates if the application is submitted directly to the employer."
                          },
                          "job_employment_type": {
                            "type": "string",
                            "nullable": true,
                            "description": "Employment type label (e.g. Full-time, Part-time, Contractor)."
                          },
                          "relocation_required": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "Whether relocation is required, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_benefits_strings": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "description": "Raw benefit strings detected in the listing (when available)."
                          },
                          "job_employment_types": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "description": "Normalized employment type codes. Values: FULLTIME, CONTRACTOR, PARTTIME, INTERN."
                          },
                          "relocation_assistance": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "Whether relocation assistance is provided, extracted via AI enrichment (?enrich=true)."
                          },
                          "required_technologies": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "description": "Required technologies and tools, extracted via AI enrichment (?enrich=true)."
                          },
                          "preferred_technologies": {
                            "type": "array",
                            "items": {
                              "type": "string"
                            },
                            "nullable": true,
                            "description": "Preferred/nice-to-have technologies, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_posted_at_timestamp": {
                            "type": "integer",
                            "nullable": true,
                            "description": "Unix timestamp (seconds) of when the job was posted."
                          },
                          "required_experience_years": {
                            "type": "integer",
                            "nullable": true,
                            "description": "Minimum years of experience required, extracted via AI enrichment (?enrich=true)."
                          },
                          "job_posted_at_datetime_utc": {
                            "type": "string",
                            "nullable": true,
                            "description": "ISO 8601 UTC datetime of when the job was posted."
                          },
                          "has_management_responsibilities": {
                            "type": "boolean",
                            "nullable": true,
                            "description": "Whether the role involves managing or mentoring others, extracted via AI enrichment (?enrich=true)."
                          }
                        }
                      },
                      "description": "Array of job detail objects (one per requested job_id, batched up to 20)."
                    },
                    "status": {
                      "type": "string",
                      "description": "The status of the API response."
                    },
                    "parameters": {
                      "type": "object",
                      "properties": {
                        "job_id": {
                          "type": "string",
                          "description": "The job identifier provided in the request."
                        },
                        "country": {
                          "type": "string",
                          "description": "ISO 3166-1 alpha-2 country code used for the lookup."
                        },
                        "language": {
                          "type": "string",
                          "description": "ISO 639 language code used for the lookup."
                        }
                      },
                      "description": "The parameters the API received and used for this request, echoed back."
                    },
                    "request_id": {
                      "type": "string",
                      "description": "A unique ID to trace the API request."
                    }
                  }
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "description": "Agent identity credential required: register once, then retry with Authorization: Bearer <token>."
          },
          "403": {
            "description": "No active plan covers this call; the body lists the plans that do. Buy one with your bearer, then retry."
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "job_id",
            "schema": {
              "type": "string",
              "example": "20N57zBfi3eT9BdpAAAAAA=="
            },
            "example": "20N57zBfi3eT9BdpAAAAAA==",
            "required": true,
            "description": "Job Id of the job for which to get details.  \n  Batching of up to 20 Job Ids is supported by separating multiple Job Ids by comma (,).  \n  Note that each Job Id in a batch request is counted as a request for quota calculation."
          },
          {
            "in": "query",
            "name": "country",
            "schema": {
              "type": "string",
              "default": "us"
            },
            "description": "Country code of the country from which to return job posting.  \n\n  **Allowed values:** See *https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2*"
          },
          {
            "in": "query",
            "name": "language",
            "schema": {
              "type": "string"
            },
            "description": "Language code in which to return job postings.  \n  Leave empty to use the primary language in the specified country (country parameter).  \n  \n  **Allowed values:** See *https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes*"
          },
          {
            "in": "query",
            "name": "fields",
            "schema": {
              "type": "string"
            },
            "description": "A comma separated list of job fields to include in the response (field projection).  \n  By default all fields are returned.  "
          }
        ],
        "description": "Get all job details, including additional information such as: application options / links, employer reviews and estimated salaries for similar jobs.",
        "operationId": "jsearch__get__job_details",
        "x-zeroclick-document-sources": [
          {
            "gaps": [],
            "pages": [],
            "sourceId": "sds_L_Fsr74jXxRwFrRFUiukT",
            "authority": "official",
            "conflicts": [],
            "revisionId": "sdrn_HdbhVfuBqBhlSPOka23bU"
          }
        ],
        "x-zeroclick-services": [
          "jsearch"
        ],
        "x-payment-info": {
          "access": "plan",
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.030000"
          },
          "rates": [
            {
              "service": "jsearch",
              "meter": "requests",
              "unit": "request",
              "unitSize": 10,
              "priceUsd": "0.030000",
              "includedUnits": 0
            }
          ],
          "perCallUsage": [
            {
              "service": "jsearch",
              "meter": "requests",
              "quantity": 1
            }
          ]
        },
        "security": [
          {
            "planAccess": []
          }
        ]
      }
    },
    "/jsearch/search-v2": {
      "get": {
        "summary": "Job Search",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "required": [
                    "status",
                    "request_id",
                    "parameters",
                    "data"
                  ],
                  "properties": {
                    "data": {
                      "type": "object",
                      "required": [
                        "jobs"
                      ],
                      "properties": {
                        "jobs": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "required": [
                              "job_id",
                              "job_title",
                              "employer_name",
                              "job_publisher",
                              "job_apply_link"
                            ],
                            "properties": {
                              "job_id": {
                                "type": "string",
                                "description": "Unique identifier of the job posting. Use as input to /job-details."
                              },
                              "job_city": {
                                "type": "string",
                                "nullable": true,
                                "description": "City where the job is located."
                              },
                              "job_state": {
                                "type": "string",
                                "nullable": true,
                                "description": "State or province where the job is located."
                              },
                              "job_title": {
                                "type": "string",
                                "description": "Title of the job posting."
                              },
                              "job_salary": {
                                "type": "string",
                                "nullable": true,
                                "description": "Salary description as published by the source (free-form)."
                              },
                              "job_country": {
                                "type": "string",
                                "nullable": true,
                                "description": "ISO 3166-1 alpha-2 country code of the job location."
                              },
                              "job_benefits": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "nullable": true,
                                "description": "Normalized benefit codes detected in the listing (e.g. health_insurance, dental_coverage, paid_time_off, retirement_savings)."
                              },
                              "job_latitude": {
                                "type": "number",
                                "nullable": true,
                                "description": "Latitude of the job location."
                              },
                              "job_location": {
                                "type": "string",
                                "nullable": true,
                                "description": "Full location string (e.g. 'Chicago, IL')."
                              },
                              "job_onet_soc": {
                                "type": "string",
                                "nullable": true,
                                "description": "O*NET SOC occupation code for the job."
                              },
                              "apply_options": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "required": [
                                    "apply_link",
                                    "publisher"
                                  ],
                                  "properties": {
                                    "is_direct": {
                                      "type": "boolean",
                                      "description": "True if the apply link goes directly to the employer's careers site."
                                    },
                                    "publisher": {
                                      "type": "string",
                                      "description": "Name of the publisher hosting this apply link."
                                    },
                                    "apply_link": {
                                      "type": "string",
                                      "description": "Apply URL on this publisher."
                                    }
                                  }
                                },
                                "description": "Alternative apply links from other publishers."
                              },
                              "employer_logo": {
                                "type": "string",
                                "nullable": true,
                                "description": "URL of the employer's logo image."
                              },
                              "employer_name": {
                                "type": "string",
                                "description": "Name of the employer / company."
                              },
                              "job_is_remote": {
                                "type": "boolean",
                                "nullable": true,
                                "description": "True if the job is fully remote."
                              },
                              "job_longitude": {
                                "type": "number",
                                "nullable": true,
                                "description": "Longitude of the job location."
                              },
                              "job_posted_at": {
                                "type": "string",
                                "nullable": true,
                                "description": "Human-readable posting time (e.g. '2 days ago')."
                              },
                              "job_publisher": {
                                "type": "string",
                                "description": "Name of the site that published this listing."
                              },
                              "job_apply_link": {
                                "type": "string",
                                "description": "Primary URL to apply for the job."
                              },
                              "job_highlights": {
                                "type": "object",
                                "description": "Bulleted highlights extracted from the listing. Keys typically include 'Qualifications', 'Responsibilities', 'Benefits'. Each value is an array of bullet strings.",
                                "additionalProperties": {
                                  "type": "array",
                                  "items": {
                                    "type": "string"
                                  }
                                }
                              },
                              "job_max_salary": {
                                "type": "number",
                                "nullable": true,
                                "description": "Maximum salary parsed from the listing."
                              },
                              "job_min_salary": {
                                "type": "number",
                                "nullable": true,
                                "description": "Minimum salary parsed from the listing."
                              },
                              "job_description": {
                                "type": "string",
                                "nullable": true,
                                "description": "Full text of the job description as posted."
                              },
                              "job_google_link": {
                                "type": "string",
                                "nullable": true,
                                "description": "Link to the job's Google for Jobs detail panel."
                              },
                              "employer_reviews": {
                                "type": "array",
                                "items": {
                                  "type": "object",
                                  "properties": {
                                    "score": {
                                      "type": "number",
                                      "description": "Average review score on this publisher."
                                    },
                                    "max_score": {
                                      "type": "number",
                                      "description": "Maximum score on the publisher's scale."
                                    },
                                    "num_stars": {
                                      "type": "number",
                                      "description": "Star rating (typically 0-5, possibly fractional)."
                                    },
                                    "publisher": {
                                      "type": "string",
                                      "description": "Name of the review publisher (e.g. Indeed, Glassdoor)."
                                    },
                                    "review_count": {
                                      "type": "integer",
                                      "description": "Total number of reviews on this publisher."
                                    },
                                    "reviews_link": {
                                      "type": "string",
                                      "description": "URL to the publisher's reviews page for this employer."
                                    },
                                    "employer_name": {
                                      "type": "string",
                                      "description": "Employer name as it appears on the publisher."
                                    }
                                  }
                                },
                                "nullable": true,
                                "description": "Aggregated employer review summaries from third-party publishers. Present when available."
                              },
                              "employer_website": {
                                "type": "string",
                                "nullable": true,
                                "description": "Employer's official website URL."
                              },
                              "job_onet_job_zone": {
                                "type": "string",
                                "nullable": true,
                                "description": "O*NET job zone classification (1-5) indicating preparation level required."
                              },
                              "job_salary_period": {
                                "type": "string",
                                "nullable": true,
                                "description": "Period of the salary. Values: HOUR, DAY, WEEK, MONTH, YEAR."
                              },
                              "job_salary_string": {
                                "type": "string",
                                "nullable": true,
                                "description": "Raw salary string as extracted from the listing (free-form)."
                              },
                              "job_apply_is_direct": {
                                "type": "boolean",
                                "description": "True if the apply link goes directly to the employer's careers site (not via an aggregator)."
                              },
                              "job_employment_type": {
                                "type": "string",
                                "nullable": true,
                                "description": "Employment type label (e.g. Full-time, Part-time, Contractor)."
                              },
                              "job_benefits_strings": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "nullable": true,
                                "description": "Raw benefit strings detected in the listing (when available)."
                              },
                              "job_employment_types": {
                                "type": "array",
                                "items": {
                                  "type": "string"
                                },
                                "description": "Normalized employment type codes. Values: FULLTIME, CONTRACTOR, PARTTIME, INTERN."
                              },
                              "job_posted_at_timestamp": {
                                "type": "integer",
                                "nullable": true,
                                "description": "Unix timestamp (seconds) of when the job was posted."
                              },
                              "job_posted_at_datetime_utc": {
                                "type": "string",
                                "nullable": true,
                                "description": "ISO 8601 UTC datetime of when the job was posted."
                              }
                            }
                          },
                          "description": "Array of job postings matching the search."
                        },
                        "cursor": {
                          "type": "string",
                          "nullable": true,
                          "description": "Cursor for fetching the next page. Pass as the `cursor` query parameter on the next request. Null when there are no more pages."
                        }
                      }
                    },
                    "status": {
                      "type": "string",
                      "description": "The status of the API response."
                    },
                    "parameters": {
                      "type": "object",
                      "properties": {
                        "query": {
                          "type": "string",
                          "description": "The search query string as received."
                        },
                        "cursor": {
                          "type": "string",
                          "nullable": true,
                          "description": "The cursor value as received (empty/absent on the first page)."
                        },
                        "country": {
                          "type": "string",
                          "description": "ISO 3166-1 alpha-2 country code used for the search."
                        },
                        "language": {
                          "type": "string",
                          "description": "ISO 639 language code used for the search."
                        },
                        "num_pages": {
                          "type": "integer",
                          "description": "Number of pages requested."
                        },
                        "date_posted": {
                          "type": "string",
                          "description": "Date posted filter as received. Values: all, today, 3days, week, month."
                        }
                      },
                      "description": "The parameters the API received and used for this request, echoed back."
                    },
                    "request_id": {
                      "type": "string",
                      "description": "A unique ID to trace the API request."
                    }
                  }
                }
              }
            },
            "description": "Successful Response"
          },
          "401": {
            "description": "Agent identity credential required: register once, then retry with Authorization: Bearer <token>."
          },
          "403": {
            "description": "No active plan covers this call; the body lists the plans that do. Buy one with your bearer, then retry."
          }
        },
        "parameters": [
          {
            "in": "query",
            "name": "query",
            "schema": {
              "type": "string",
              "example": "developer jobs in chicago"
            },
            "example": "developer jobs in chicago",
            "required": true,
            "description": "Free-form jobs search query.  \n  It is highly recommended to include job title and location as part of the query, see query examples below.  \n  \n  **Examples:**  \n  `web development jobs in chicago`  \n  `marketing manager in new york via linkedin`  "
          },
          {
            "in": "query",
            "name": "cursor",
            "schema": {
              "type": "string"
            },
            "description": "Cursor for paginating results.  \n  Pass the value of `data.cursor` returned by the previous response to fetch the next page.  \n  Leave empty (or omit) to start from the first page."
          },
          {
            "in": "query",
            "name": "num_pages",
            "schema": {
              "type": "integer",
              "default": 1
            },
            "description": "Number of pages to return, starting from page.  \n\n  **Allowed values:** `1-20`  \n  \n   **Note**: Each page (containing up to 10 results) returned by the API consumes one request credit."
          },
          {
            "in": "query",
            "name": "country",
            "schema": {
              "type": "string",
              "default": "us"
            },
            "description": "Country code of the country from which to return job postings.  \n  Please note that this parameter must be set in order to get jobs in a specific country, for example, to query for software developer jobs in Berlin, \none should add *country=de* to the request - *e.g. query=software+developers+in +berlin&country=de*.  \n  For the list of supported values see *https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2"
          },
          {
            "in": "query",
            "name": "language",
            "schema": {
              "type": "string"
            },
            "description": "Language code in which to return job postings. Leave empty to use the primary language in the specified country (country parameter).\n  In case a language not supported by the specified country is used, it is likely that no results will be returned.  \n  For the list of supported values see https://en.wikipedia.org/wiki/List_of_ISO_639_language_codes"
          },
          {
            "in": "query",
            "name": "date_posted",
            "schema": {
              "enum": [
                "all",
                "today",
                "3days",
                "week",
                "month"
              ],
              "type": "string",
              "default": "all"
            },
            "description": "Find jobs posted within the time you specify."
          },
          {
            "in": "query",
            "name": "work_from_home",
            "schema": {
              "type": "boolean",
              "default": false
            },
            "description": "Only return work from home / remote jobs."
          },
          {
            "in": "query",
            "name": "employment_types",
            "schema": {
              "enum": [
                "FULLTIME",
                "CONTRACTOR",
                "PARTTIME",
                "INTERN"
              ],
              "type": "string"
            },
            "description": "Find jobs of particular employment types, specified as a comma delimited list of the following values:"
          },
          {
            "in": "query",
            "name": "job_requirements",
            "schema": {
              "enum": [
                "under_3_years_experience",
                "more_than_3_years_experience",
                "no_experience",
                "no_degree"
              ],
              "type": "string"
            },
            "description": "Find jobs with specific requirements, specified as a comma delimited list of the following values:"
          },
          {
            "in": "query",
            "name": "radius",
            "schema": {
              "type": "number"
            },
            "description": "Return jobs within a certain distance from location as specified as part of the query (in km).  \n  This internally sent as the Google \"lrad\" parameter and although it might affect the results, it is not strictly followed by Google for Jobs."
          },
          {
            "in": "query",
            "name": "exclude_job_publishers",
            "schema": {
              "type": "string"
            },
            "description": "Exclude jobs published by specific publishers, specified as a comma (,) separated list of publishers to exclude.  "
          },
          {
            "in": "query",
            "name": "fields",
            "schema": {
              "type": "string"
            },
            "description": "A comma separated list of job fields to include in the response (field projection).  \n  By default all fields are returned."
          }
        ],
        "description": "Search for jobs posted on any public job site across the web on the largest job aggregate in the world (Google for Jobs).  \n  Extensive filtering support and most options available on Google for Jobs.  \n  \n  Use cursor-based pagination: pass `data.cursor` from the previous response as the `cursor` query parameter on the next request.",
        "operationId": "jsearch__get__search_v2",
        "x-zeroclick-document-sources": [
          {
            "gaps": [],
            "pages": [],
            "sourceId": "sds_L_Fsr74jXxRwFrRFUiukT",
            "authority": "official",
            "conflicts": [],
            "revisionId": "sdrn_HdbhVfuBqBhlSPOka23bU"
          }
        ],
        "x-zeroclick-services": [
          "jsearch"
        ],
        "x-payment-info": {
          "access": "plan",
          "price": {
            "mode": "dynamic",
            "currency": "USD",
            "min": "0.030000"
          },
          "rates": [
            {
              "service": "jsearch",
              "meter": "requests",
              "unit": "request",
              "unitSize": 10,
              "priceUsd": "0.030000",
              "includedUnits": 0
            }
          ],
          "perCallUsage": [
            {
              "service": "jsearch",
              "meter": "requests",
              "quantity": 1
            }
          ]
        },
        "security": [
          {
            "planAccess": []
          }
        ]
      }
    }
  },
  "x-zeroclick-navigation-footer": {
    "instructions": [
      "Use this spec if it contains the operation and details you need. Otherwise, search or open a relevant service spec using the links below.",
      "Find service slugs in x-zeroclick-services or x-payment-info.rates[].service; use them in serviceSpecTemplate, never as request values.",
      "URL-encode template values. Search is ranked; service, path, and method filters are exact. Filters combine.",
      "Pages contain up to 10 operations; follow info.x-next or the Link header if you need more results. Shared operations retain all selector values."
    ],
    "fullSpec": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json",
    "services": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/services",
    "serviceSpecTemplate": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/services/{slug}/openapi.json",
    "searchTemplate": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json?q={text}",
    "operationTemplate": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json?path={path}&method={method}",
    "firstPage": "https://agents.openwebninja.com/zcj/v8c3szxamb6i/openapi.json?page=1"
  }
}
