{
  "openapi": "3.0.1",
  "info": {
    "title": "GSA Labor Rate Benchmarks (CALC+)",
    "description": "Benchmark GSA CALC+ ceiling labor rates for many labor categories at once, export rate records, and track rate changes for vendors or contracts. Public GSA data.",
    "version": "0.1",
    "x-build-id": "8e75LcCoSF4eqP4uw"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maxbeuvelet~gsa-labor-rate-benchmarks/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maxbeuvelet-gsa-labor-rate-benchmarks",
        "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/maxbeuvelet~gsa-labor-rate-benchmarks/runs": {
      "post": {
        "operationId": "runs-sync-maxbeuvelet-gsa-labor-rate-benchmarks",
        "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/maxbeuvelet~gsa-labor-rate-benchmarks/run-sync": {
      "post": {
        "operationId": "run-sync-maxbeuvelet-gsa-labor-rate-benchmarks",
        "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": {
          "mode": {
            "title": "What do you want to do?",
            "enum": [
              "search",
              "benchmark",
              "watch"
            ],
            "type": "string",
            "description": "Search exports matching rate records. Benchmark summarizes the rates for each labor category you list. Watch compares today's rates for your vendors, contracts or labor categories with your previous run.",
            "default": "search"
          },
          "keyword": {
            "title": "Keyword",
            "minLength": 2,
            "maxLength": 100,
            "type": "string",
            "description": "Words to look for in labor category, vendor or contract number (partial matches count). Ignored when you fill in one of the exact fields below.",
            "default": "Project Manager"
          },
          "laborCategoryExact": {
            "title": "Labor category (exact)",
            "minLength": 2,
            "maxLength": 200,
            "type": "string",
            "description": "Find rate records whose labor category is exactly this text. Leave empty to use the keyword instead."
          },
          "vendorExact": {
            "title": "Vendor name (exact)",
            "minLength": 2,
            "maxLength": 200,
            "type": "string",
            "description": "Find rate records for this vendor, spelled as it appears on the GSA schedule; capitalization does not matter. Leave empty to use the keyword instead."
          },
          "contractNumber": {
            "title": "Contract number",
            "minLength": 2,
            "maxLength": 200,
            "type": "string",
            "description": "Find rate records for one contract, for example GS-35F-0000X. Leave empty to use the keyword instead."
          },
          "maxResults": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "The most rate records the run returns. You are charged only for records returned, so a lower number costs less.",
            "default": 100
          },
          "sort": {
            "title": "Sort by price",
            "enum": [
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Return the cheapest rates first or the most expensive rates first.",
            "default": "price_asc"
          },
          "benchmarkLaborCategories": {
            "title": "Labor categories to benchmark",
            "minItems": 1,
            "maxItems": 200,
            "type": "array",
            "description": "Job titles to summarize, one per line, for example Project Manager. Each gets one summary with minimum, median, average and maximum hourly rates.",
            "items": {
              "type": "string"
            }
          },
          "benchmarkMatch": {
            "title": "How titles are matched",
            "enum": [
              "contains",
              "exact"
            ],
            "type": "string",
            "description": "Contains also counts longer titles such as Senior Project Manager. Exact counts only records with exactly that title.",
            "default": "contains"
          },
          "watchVendors": {
            "title": "Vendors to watch",
            "maxItems": 20,
            "type": "array",
            "description": "Vendor names to watch, one per line, spelled as they appear on the GSA schedule; capitalization does not matter. Between vendors, contracts and labor categories you can list 1 to 20 targets in total.",
            "items": {
              "type": "string"
            }
          },
          "watchContracts": {
            "title": "Contracts to watch",
            "maxItems": 20,
            "type": "array",
            "description": "Contract numbers to watch, one per line, for example GS-35F-0000X.",
            "items": {
              "type": "string"
            }
          },
          "watchLaborCategories": {
            "title": "Labor categories to watch",
            "maxItems": 20,
            "type": "array",
            "description": "Labor category names to watch, one per line.",
            "items": {
              "type": "string"
            }
          },
          "watchName": {
            "title": "Watch name",
            "pattern": "^[a-z0-9-]{2,40}$",
            "type": "string",
            "description": "A label for this watch list: 2 to 40 lowercase letters, digits or hyphens. Runs with the same name are compared with each other; use a new name for a separate list.",
            "default": "default"
          },
          "maxRecordsPerTarget": {
            "title": "Maximum records per target",
            "minimum": 100,
            "maximum": 5000,
            "type": "integer",
            "description": "The most rate records checked for each watched target. Targets with more records than this are cut off and reported as incomplete.",
            "default": 2000
          },
          "includeBaselineRecords": {
            "title": "Output records on the first run",
            "type": "boolean",
            "description": "On the first run for a watch name, also return every rate record found. Off by default, so the first run only saves a baseline.",
            "default": false
          },
          "educationLevels": {
            "title": "Education levels",
            "maxItems": 6,
            "type": "array",
            "description": "Keep only records for these minimum education levels. Leave empty for all levels.",
            "items": {
              "type": "string",
              "enum": [
                "HS",
                "AA",
                "BA",
                "MA",
                "PHD",
                "TEC"
              ],
              "enumTitles": [
                "High school",
                "Associate degree",
                "Bachelor's degree",
                "Master's degree",
                "Doctorate",
                "Technical certification"
              ]
            }
          },
          "minYearsExperience": {
            "title": "Minimum years of experience",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Keep only records that ask for at least this many years of experience (0 to 40)."
          },
          "maxYearsExperience": {
            "title": "Maximum years of experience",
            "minimum": 0,
            "maximum": 40,
            "type": "integer",
            "description": "Keep only records that ask for at most this many years of experience (0 to 40). Must not be below the minimum."
          },
          "priceMin": {
            "title": "Minimum hourly price (USD)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Keep only records priced at or above this many US dollars per hour (0 to 1,000)."
          },
          "priceMax": {
            "title": "Maximum hourly price (USD)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Keep only records priced at or below this many US dollars per hour (0 to 1,000). Must not be below the minimum."
          },
          "worksite": {
            "title": "Worksite",
            "enum": [
              "any",
              "customer",
              "contractor",
              "virtual"
            ],
            "type": "string",
            "description": "Where the work is done: at the customer's site, at the contractor's site, or virtually. Any means no filter.",
            "default": "any"
          },
          "businessSize": {
            "title": "Business size",
            "enum": [
              "any",
              "small",
              "other_than_small"
            ],
            "type": "string",
            "description": "Keep only small businesses or only other-than-small businesses. Any means no filter.",
            "default": "any"
          },
          "securityClearance": {
            "title": "Security clearance",
            "enum": [
              "any",
              "required",
              "not_required"
            ],
            "type": "string",
            "description": "Keep only records where a security clearance is required, or only where it is not. Any means no filter.",
            "default": "any"
          },
          "sin": {
            "title": "Special Item Number (SIN)",
            "minLength": 2,
            "maxLength": 20,
            "type": "string",
            "description": "Keep only records under this one GSA Special Item Number, for example 54151S. Enter a single value without commas or vertical bars."
          },
          "apiDataGovKey": {
            "title": "Your api.data.gov key (optional)",
            "type": "string",
            "description": "Your own free api.data.gov key. It is sent only to the GSA service as a request header and is never logged or stored. Leave empty to use the shared limit."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}