{
  "openapi": "3.0.1",
  "info": {
    "title": "ATS & Career Page Jobs Scraper: Greenhouse, Lever +20",
    "description": "Career page jobs scraper and ATS jobs API: every open job at the companies you name, read live from Greenhouse, Lever, Ashby, Workday and 18 more job boards. Pay per company, up to 1,000 jobs included. New-job alerts to Slack. MCP-ready. No API key or login.",
    "version": "0.0",
    "x-build-id": "fNdqw62NdGUgQTl7V"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/conserving_celerytop~live-career-page-jobs-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-conserving_celerytop-live-career-page-jobs-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/conserving_celerytop~live-career-page-jobs-api/runs": {
      "post": {
        "operationId": "runs-sync-conserving_celerytop-live-career-page-jobs-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/conserving_celerytop~live-career-page-jobs-api/run-sync": {
      "post": {
        "operationId": "run-sync-conserving_celerytop-live-career-page-jobs-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "companies": {
            "title": "Companies",
            "maxItems": 500,
            "type": "array",
            "description": "One entry per company, up to 500. A job board link works best, such as boards.greenhouse.io/stripe, on Greenhouse, Lever, Ashby, Workday, Eightfold, Workable, Personio, Teamtailor, Recruitee and 13 more boards (list in the README). A website (stripe.com) works too, as does a plain name (stripe) for many companies. One company lookup per company, 1,000 jobs included, also when no board is found.",
            "items": {
              "type": "string"
            }
          },
          "companyLists": {
            "title": "Ready-made company lists",
            "uniqueItems": true,
            "type": "array",
            "description": "Run on ready-made lists of companies instead of, or next to, your own list in Companies. Each list company is one company lookup (1,000 jobs included), and the filters apply as usual. To run only the lists, clear Companies. A company in two lists, or also in Companies, is read and charged once. At most 500 companies per run. API value: a list such as [\"ai-companies\"].",
            "items": {
              "type": "string",
              "enum": [
                "ai-companies",
                "tech-companies",
                "remote-first",
                "europe-tech",
                "startups"
              ],
              "enumTitles": [
                "AI companies (179)",
                "Tech companies (311)",
                "Remote-first companies (90)",
                "Tech companies hiring in Europe (65)",
                "Startups (250)"
              ]
            }
          },
          "excludeCompanies": {
            "title": "Exclude companies",
            "maxItems": 1000,
            "type": "array",
            "description": "Companies to leave out, such as your own employer or companies you already track: company names, websites or job board links, up to 1,000. Most useful with Ready-made company lists. A company left out is not read and not charged. Leave empty to keep every company.",
            "items": {
              "type": "string"
            }
          },
          "outputMode": {
            "title": "Rows to return",
            "enum": [
              "jobs",
              "companies",
              "both"
            ],
            "type": "string",
            "description": "jobs: one row per job. companies: one summary row per company with open jobs, recent postings, remote share, top departments, locations, seniority, job functions, leadership and first-hire roles, salary medians and top tools (all fields in the README). It costs one lookup per company, never the extra 1,000-job charge. both: job rows plus summary rows (rowType job, company or status).",
            "default": "jobs"
          },
          "includeDescription": {
            "title": "Include job description",
            "type": "boolean",
            "description": "true: add each job's full description as plain text (up to 60,000 characters, no contact details) and the tools it names (field tools). Free on most boards; $0.01 per started 200 jobs on JazzHR, Paylocity, Freshteam, JOIN, Polymer, Workday, Eightfold, ClearCompany, GoHire and HiringThing portals. With Only new jobs, only new jobs are described.",
            "default": false
          },
          "descriptionFormat": {
            "title": "Description format",
            "enum": [
              "text",
              "html",
              "markdown"
            ],
            "type": "string",
            "description": "How each description comes, with Include job description on. text: plain text. html: the board's own HTML, kept safe: no scripts, styles, frames or event handlers. markdown: the same converted to Markdown. Every format has emails, phone numbers and profile links removed and is cut at 60,000 characters. Same price.",
            "default": "text"
          },
          "maxJobsPerCompany": {
            "title": "Max jobs per company",
            "minimum": 1,
            "type": "integer",
            "description": "Return at most this many jobs per company, the newest first, for example 50. To answer a quick question, 20 is enough. Leave empty for all jobs, up to 10,000 per company. Set 1,000 or less to never pay the $0.01 charge for each further 1,000 jobs. With Only new jobs, closed jobs come on top of this cap and count toward that charge. Summary rows still count every matching job."
          },
          "onlyNewJobs": {
            "title": "Only new jobs since my last check",
            "type": "boolean",
            "description": "true: return only jobs you have not received from this Actor before, plus jobs that closed since your previous check (field change is new or closed). The first check of a company returns all its jobs for one company lookup; a later check costs $0.002 per started 1,000 open jobs. Use it with a schedule. What you received is saved in your own Apify account, per Monitor name and set of filters.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "pattern": "^[\\w-]{1,40}$",
            "type": "string",
            "description": "Only used with Only new jobs. Name of the saved list of jobs you received, so separate watchlists do not mix, for example sales-accounts or competitors. Letters, numbers, - and _ only, up to 40 characters. Default: default.",
            "default": "default"
          },
          "includeUpdatedJobs": {
            "title": "Also return updated jobs",
            "type": "boolean",
            "description": "Only used with Only new jobs. true: also return jobs you received before whose title, location, salary or job type changed since your previous check, with change updated, changedFields and the previous values. Each is one more row, so it counts toward the $0.01 per further 1,000 jobs. Default false: the price stays the same and changes are only counted in summary rows.",
            "default": false
          },
          "skipReposts": {
            "title": "Skip reposted jobs",
            "type": "boolean",
            "description": "Only used with Only new jobs. true: leave out a new job with the same title and location as a job you received that closed in the last 30 days, a repost under a new id. It gets no row and no alert, and never comes back as new; skippedRepostsCount says how many. Default false: reposts come as new jobs with reposted true.",
            "default": false
          },
          "alertWebhookUrl": {
            "title": "Alert webhook URL",
            "type": "string",
            "description": "Only used with Only new jobs. An https link that gets one short message after a check with new or closed jobs, and nothing on days without changes: the incoming webhook of a Slack, Discord or Teams channel, or a Make, Zapier or n8n webhook, such as https://hooks.slack.com/services/... It lists counts per company and the jobs with links. Free. Kept secret."
          },
          "alertMaxJobs": {
            "title": "Jobs listed in an alert",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Only used with Alert webhook URL. How many new and closed jobs the alert lists, one line each with title, location and salary when known, for example 20. More jobs are counted with a link to the dataset. A whole number from 1 to 50. Free. Default 10.",
            "default": 10
          },
          "alertOnFirstCheck": {
            "title": "Alert on a first check",
            "type": "boolean",
            "description": "Only used with Alert webhook URL. true: also send an alert on the first check of a company, which returns all its open jobs as new. Default false: the first check sends nothing, and later checks alert only on new and closed jobs. Free.",
            "default": false
          },
          "titleIncludes": {
            "title": "Title includes",
            "maxItems": 100,
            "type": "array",
            "description": "Keep only jobs whose title contains one of these words or phrases, ignoring case. Use it to check if a company is hiring for a role, for example data engineer or account executive. Whole words only, so engineer matches Software Engineer but not Engineering Manager. A list of up to 100. Leave empty for all titles.",
            "items": {
              "type": "string"
            }
          },
          "titleExcludes": {
            "title": "Title excludes",
            "maxItems": 100,
            "type": "array",
            "description": "Leave out jobs whose title contains any of these words or phrases, ignoring case. Whole words only, so intern does not match International. A list of up to 100, for example senior and intern. An excluded word wins over Title includes. Leave empty to keep every title.",
            "items": {
              "type": "string"
            }
          },
          "descriptionIncludes": {
            "title": "Description includes",
            "maxItems": 100,
            "type": "array",
            "description": "Keep only jobs whose description names any of these words or phrases, ignoring case, such as Snowflake, Rust or C++. Whole words only, so Rust does not match trust. A tool also matches its other names, so Postgres finds PostgreSQL. Up to 100. This turns on Include job description (see its price). Leave empty for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "skills": {
            "title": "Skills",
            "maxItems": 100,
            "type": "array",
            "description": "Keep only jobs that name at least one of these skills in their tools, such as Python, Snowflake or Salesforce, ignoring case. Other spellings work, so golang finds Go; matchedSkills lists the ones found. An unknown skill stops the run before any charge, with close names. Up to 100. This turns on Include job description (see its price). Leave empty for all jobs.",
            "items": {
              "type": "string"
            }
          },
          "department": {
            "title": "Department",
            "type": "string",
            "description": "Keep only jobs whose department, team or department path contains this text, ignoring case, for example engineering. For several, put one per line. A job that matches any of them is kept. In API input, put a line break between values, as in \"engineering\\nsales\". Up to 100. Leave empty for all departments."
          },
          "seniorities": {
            "title": "Seniority",
            "type": "array",
            "description": "Keep only jobs at one of these levels (field seniority), read from the title: Senior Engineer is senior, Head of Sales is director. A title without a level word, such as Software Engineer, has no seniority: those jobs are left out, and the company's warning says how many. Leave empty for all levels.",
            "items": {
              "type": "string",
              "enum": [
                "intern",
                "entry",
                "mid",
                "senior",
                "staff_principal",
                "lead_manager",
                "director",
                "vp",
                "c_level"
              ],
              "enumTitles": [
                "Intern",
                "Entry",
                "Mid",
                "Senior",
                "Staff or principal",
                "Lead or manager",
                "Director",
                "VP",
                "C-level"
              ]
            }
          },
          "jobFunctions": {
            "title": "Job functions",
            "uniqueItems": true,
            "type": "array",
            "description": "Keep only jobs in these functions, read from each job's title, then its department and team (output field jobFunction). Pick one or more, for example Engineering and Data. English and German titles are read, and basic French, Spanish, Dutch and Swedish ones. In our tests about 9 in 10 jobs got the right function. API value: a list such as [\"engineering\", \"data\"]. Leave empty for all functions.",
            "items": {
              "type": "string",
              "enum": [
                "engineering",
                "data",
                "product",
                "design",
                "sales",
                "marketing",
                "customer_success",
                "operations",
                "finance",
                "legal",
                "people_hr",
                "it_security",
                "research_science",
                "healthcare",
                "education",
                "manufacturing_trades",
                "retail_hospitality",
                "other"
              ],
              "enumTitles": [
                "Engineering",
                "Data and analytics",
                "Product",
                "Design",
                "Sales",
                "Marketing",
                "Customer success and support",
                "Operations",
                "Finance",
                "Legal and compliance",
                "People and HR",
                "IT and security",
                "Research and science",
                "Healthcare",
                "Education",
                "Manufacturing and trades",
                "Retail, restaurants and hospitality",
                "Other"
              ]
            }
          },
          "employmentTypes": {
            "title": "Job type",
            "type": "array",
            "description": "Keep only jobs with one of these job types (field employmentTypeNormalized), from the board's job type or the title. Jobs whose type is unknown are left out, and the company's warning says how many. Teamtailor gives no job type and Greenhouse only when the company sets one, so there mostly titles like Intern or Part-time tell. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "full_time",
                "part_time",
                "contract",
                "temporary",
                "internship",
                "apprenticeship",
                "volunteer"
              ],
              "enumTitles": [
                "Full-time",
                "Part-time",
                "Contract",
                "Temporary",
                "Internship",
                "Apprenticeship",
                "Volunteer"
              ]
            }
          },
          "maxExperienceYears": {
            "title": "Max years of experience",
            "minimum": 0,
            "maximum": 50,
            "type": "integer",
            "description": "Keep only jobs whose description asks for at most this many years of experience, read from phrases like 5+ years or mindestens 3 Jahre. A whole number from 0 to 50, such as 3. Jobs that give no years are left out; the warning says how many. This turns on Include job description (see its price). Leave empty for all."
          },
          "languages": {
            "title": "Languages",
            "maxItems": 20,
            "type": "array",
            "description": "Keep only jobs written in one of these languages, as two-letter codes such as en, de or fr (field language). Greenhouse gives each job's language; elsewhere it is read from the description. This turns on Include job description (see its price). Jobs whose language is unknown are left out; the warning says how many.",
            "items": {
              "type": "string"
            }
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "Keep only jobs in this place, such as London, California or Germany. A country name or code (DE) keeps jobs in that country; a US state or Canadian province keeps its region. Other text matches whole words, so York keeps New York, not Yorkshire. For several, put one per line; any match keeps a job. In API input, put a line break between values. Leave empty for all."
          },
          "locationExcludes": {
            "title": "Location excludes",
            "maxItems": 100,
            "type": "array",
            "description": "Leave out jobs in any of these places, matched like Location: India or IN also leaves out jobs in Bangalore, and California leaves out San Mateo, CA. A job with several places is left out when any of them matches. Jobs with no location are kept. A list of up to 100, for example India and Brazil. Leave empty to keep every location.",
            "items": {
              "type": "string"
            }
          },
          "near": {
            "title": "Near a city",
            "type": "string",
            "description": "Keep only jobs within the distance below of one city, such as Berlin or Austin, TX. Add the country or US state to a shared name (Cambridge, UK). Every place of a job counts; do not combine with Remote only. Jobs whose city we do not know (only a country, or a town under 15,000 people) are left out and counted in the warning. An unknown city stops the run free, with close matches."
          },
          "radiusKm": {
            "title": "Distance (km)",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How far from the city in Near a city a job may be, in kilometers, from 1 to 500. Default 50. Used only with Near a city.",
            "default": 50
          },
          "remoteOnly": {
            "title": "Remote only",
            "type": "boolean",
            "description": "true: keep only jobs that can be done fully remote. Hybrid and on-site jobs are left out. Default false.",
            "default": false
          },
          "remoteRegions": {
            "title": "Remote regions",
            "maxItems": 50,
            "type": "array",
            "description": "Keep only remote jobs open to one of these places: worldwide, americas, us, canada, latam, emea, europe, uk, apac, or a country code such as DE. Read from the job's location and title, such as Remote (EMEA). A job open worldwide matches every value, and europe keeps a job open in Germany. Remote jobs whose places are unknown are left out and counted in the warning.",
            "items": {
              "type": "string"
            }
          },
          "workplaceTypes": {
            "title": "Workplace",
            "type": "array",
            "description": "Keep only jobs with one of these workplace types: remote, hybrid or onsite (field workplaceType), from the board's own field or the location text. Jobs whose workplace type is unknown are left out, and the company's warning says how many; Greenhouse marks only remote and hybrid jobs, so its on-site jobs are unknown. Leave empty for all jobs.",
            "items": {
              "type": "string",
              "enum": [
                "remote",
                "hybrid",
                "onsite"
              ],
              "enumTitles": [
                "Remote",
                "Hybrid",
                "On-site"
              ]
            }
          },
          "hasSalary": {
            "title": "Only jobs with a salary",
            "type": "boolean",
            "description": "true: keep only jobs with a salary (salaryMin or salaryMax), from the board or written in the description. Many boards show pay only in the description. This turns on Include job description (see its price). Default false.",
            "default": false
          },
          "minAnnualSalary": {
            "title": "Minimum yearly salary",
            "minimum": 0,
            "type": "integer",
            "description": "Keep jobs whose yearly salary (salaryAnnualMax, else salaryAnnualMin) reaches this amount in the currency below, such as 120000. Pay in the description counts too. This turns on Include job description (see its price). Jobs paid in another currency (no exchange rates) or with no yearly salary are left out; the warning says how many. Empty for no minimum."
          },
          "minAnnualSalaryCurrency": {
            "title": "Minimum salary currency",
            "pattern": "^[A-Za-z]{3}$",
            "type": "string",
            "description": "Currency of Minimum yearly salary, as a three-letter code such as USD, EUR or GBP. Only jobs whose salary is in this currency can pass. Used only with Minimum yearly salary. Default USD.",
            "default": "USD"
          },
          "postedSince": {
            "title": "Posted since",
            "pattern": "^(?:|\\s*\\d+\\s*(?:[Hh][Oo][Uu][Rr]|[Dd][Aa][Yy]|[Ww][Ee][Ee][Kk]|[Mm][Oo][Nn][Tt][Hh]|[Yy][Ee][Aa][Rr])[Ss]?(?:\\s+[Aa][Gg][Oo])?\\s*|(?!\\s*(?:[Ii][Nn]\\s+)?[+-]?\\d+\\s*(?!(?:[Jj][Aa][Nn]|[Ff][Ee][Bb]|[Mm][Aa][Rr]|[Aa][Pp][Rr]|[Mm][Aa][Yy]|[Jj][Uu][Nn]|[Jj][Uu][Ll]|[Aa][Uu][Gg]|[Ss][Ee][Pp]|[Oo][Cc][Tt]|[Nn][Oo][Vv]|[Dd][Ee][Cc])|(?:[Aa][Mm]|[Pp][Mm]|[Uu][Tt]|[Uu][Tt][Cc]|[Gg][Mm][Tt]|[Zz]|[Tt]|[Ee][Ss][Tt]|[Ee][Dd][Tt]|[Cc][Ss][Tt]|[Cc][Dd][Tt]|[Mm][Ss][Tt]|[Mm][Dd][Tt]|[Pp][Ss][Tt]|[Pp][Dd][Tt])(?![A-Za-z]))[A-Za-z]+(?:\\s+[A-Za-z]+)*\\s*$)\\D*\\d[\\s\\S]*)$",
            "type": "string",
            "description": "Keep only jobs posted on or after this date. Use a date as YYYY-MM-DD, for example 2026-09-01, or a period as a number plus hours, days, weeks, months or years, for example 24 hours or 7 days. A period counts back from the start of each run, which suits schedules. Jobs whose board gives no posting date are left out. Leave empty for all dates."
          },
          "postedBefore": {
            "title": "Posted before",
            "pattern": "^(?:|\\s*\\d+\\s*(?:[Hh][Oo][Uu][Rr]|[Dd][Aa][Yy]|[Ww][Ee][Ee][Kk]|[Mm][Oo][Nn][Tt][Hh]|[Yy][Ee][Aa][Rr])[Ss]?(?:\\s+[Aa][Gg][Oo])?\\s*|(?!\\s*(?:[Ii][Nn]\\s+)?[+-]?\\d+\\s*(?!(?:[Jj][Aa][Nn]|[Ff][Ee][Bb]|[Mm][Aa][Rr]|[Aa][Pp][Rr]|[Mm][Aa][Yy]|[Jj][Uu][Nn]|[Jj][Uu][Ll]|[Aa][Uu][Gg]|[Ss][Ee][Pp]|[Oo][Cc][Tt]|[Nn][Oo][Vv]|[Dd][Ee][Cc])|(?:[Aa][Mm]|[Pp][Mm]|[Uu][Tt]|[Uu][Tt][Cc]|[Gg][Mm][Tt]|[Zz]|[Tt]|[Ee][Ss][Tt]|[Ee][Dd][Tt]|[Cc][Ss][Tt]|[Cc][Dd][Tt]|[Mm][Ss][Tt]|[Mm][Dd][Tt]|[Pp][Ss][Tt]|[Pp][Dd][Tt])(?![A-Za-z]))[A-Za-z]+(?:\\s+[A-Za-z]+)*\\s*$)\\D*\\d[\\s\\S]*)$",
            "type": "string",
            "description": "Keep only jobs posted before this date. Use a date as YYYY-MM-DD, for example 2026-06-01, or a period such as 30 days for jobs posted more than 30 days ago. With Posted since it gives a date range. Jobs whose board gives no posting date are left out, and the company's warning says how many. Leave empty for all dates."
          },
          "visaSponsorship": {
            "title": "Only jobs that sponsor visas",
            "type": "boolean",
            "description": "true: keep only jobs whose description says the company sponsors visas. Jobs that do not mention it are left out, and the warning says how many. This reads the description, so it turns on Include job description, also with Rows to return: companies, with its price on JazzHR, Paylocity, Freshteam, JOIN, Polymer, Workday, Eightfold, ClearCompany, GoHire and HiringThing portals. Default false.",
            "default": false
          },
          "ukVisaSponsorOnly": {
            "title": "Only UK visa sponsors",
            "type": "boolean",
            "description": "true: keep only jobs at companies on the UK Home Office register of licensed sponsors for workers (ukVisaSponsor true). The company name must match a register name exactly, once words like Ltd, Limited, PLC and UK are set aside, so a company listed under another legal name is left out, and so is a name too short or too common to match safely. The warning says why. Default false.",
            "default": false
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}