{
  "openapi": "3.0.1",
  "info": {
    "title": "Technology Intelligence API - Tech Install and IT Spend",
    "description": "Find and enrich companies by the technology they run. Returns installed products and vendors with last verified dates, IT spend by category, firmographics, AI and cloud maturity. Search an install base by vendor, product, industry, country, headcount or revenue. Bring your own key.",
    "version": "0.1",
    "x-build-id": "MqyAf006pIFpdfhVk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/nabeelbaghoor~technology-intelligence-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-nabeelbaghoor-technology-intelligence-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/nabeelbaghoor~technology-intelligence-api/runs": {
      "post": {
        "operationId": "runs-sync-nabeelbaghoor-technology-intelligence-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/nabeelbaghoor~technology-intelligence-api/run-sync": {
      "post": {
        "operationId": "run-sync-nabeelbaghoor-technology-intelligence-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": {
          "mode": {
            "title": "What this run does",
            "enum": [
              "enrich",
              "search",
              "match"
            ],
            "type": "string",
            "description": "Enrich fills in companies you already have. Search finds companies matching filters, which is how an install base or a territory becomes a list, and can fill each one in as it goes. Match resolves a messy company name or domain to the provider's own company identifier. The three read different parts of this form, so fields belonging to another mode are ignored rather than causing an error.",
            "default": "enrich"
          },
          "apiKey": {
            "title": "API key",
            "type": "string",
            "description": "Your own account's API key for this provider. An admin creates it in the provider's admin console under Settings and API Keys, and a v2 key starts with hg_v2_. Bring your own key: nothing is shared between runs and the key is never written to the dataset."
          },
          "companies": {
            "title": "Companies to enrich",
            "type": "array",
            "description": "One company per line, as a domain such as cisco.com or as one of the provider's own hex company identifiers. Domains and identifiers can be mixed and are sent as separate batches of 25, which is the provider's own ceiling per call.",
            "items": {
              "type": "string"
            }
          },
          "fields": {
            "title": "Data to return",
            "type": "array",
            "description": "Which field groups enrichment should include. Firmographics is the company itself, technographics is the technology it runs, spend is IT budget by category. The provider charges credits according to what is returned, so asking for fewer groups costs less.",
            "items": {
              "type": "string",
              "enum": [
                "firmographics",
                "technographics",
                "spend",
                "ai_spend",
                "contracts",
                "ai_maturity",
                "cloud_maturity",
                "mentions",
                "statistics",
                "market_benchmarks"
              ]
            },
            "default": [
              "firmographics",
              "technographics"
            ]
          },
          "vendors": {
            "title": "Technology vendors",
            "type": "array",
            "description": "Vendor names, one per line, for example Oracle, Salesforce or Snowflake. In search mode these find companies running that vendor's products. In enrich mode they narrow the technology returned to those vendors. Names are resolved to the provider's own identifiers through its free catalog, and anything that cannot be resolved is reported in the log rather than silently dropped.",
            "items": {
              "type": "string"
            }
          },
          "products": {
            "title": "Products",
            "type": "array",
            "description": "Product names, one per line, for example Salesforce Sales Cloud or Microsoft Azure. Resolved against the provider's own product catalog the same way vendors are.",
            "items": {
              "type": "string"
            }
          },
          "productCategories": {
            "title": "Product categories",
            "type": "array",
            "description": "Product category names, one per line, for example Cloud Computing or Data Warehousing. Useful when you care that a company uses something in a category rather than one specific product.",
            "items": {
              "type": "string"
            }
          },
          "inclusionMethod": {
            "title": "How technology filters combine",
            "enum": [
              "ANY_PRESENT",
              "ALL_PRESENT",
              "NONE_PRESENT"
            ],
            "type": "string",
            "description": "Whether a company has to run any of the listed technologies, all of them, or none of them. Use all present to find a full stack, none present to find companies that have not bought a competitor's product.",
            "default": "ANY_PRESENT"
          },
          "industries": {
            "title": "Industries",
            "type": "array",
            "description": "Industry names to search within, one per line, resolved against the provider's own industry catalog. Search mode only.",
            "items": {
              "type": "string"
            }
          },
          "countryCodes": {
            "title": "Countries",
            "type": "array",
            "description": "Two letter ISO country codes to search within, one per line. Search mode only.",
            "items": {
              "type": "string"
            }
          },
          "minEmployees": {
            "title": "Minimum employees",
            "minimum": 1,
            "type": "integer",
            "description": "Only find companies with at least this many employees. Search mode only."
          },
          "maxEmployees": {
            "title": "Maximum employees",
            "minimum": 1,
            "type": "integer",
            "description": "Only find companies with at most this many employees. Search mode only."
          },
          "minRevenue": {
            "title": "Minimum revenue",
            "minimum": 1,
            "type": "integer",
            "description": "Only find companies with at least this much annual revenue, in US dollars. Search mode only."
          },
          "maxRevenue": {
            "title": "Maximum revenue",
            "minimum": 1,
            "type": "integer",
            "description": "Only find companies with at most this much annual revenue, in US dollars. Search mode only."
          },
          "enrichSearchResults": {
            "title": "Enrich the companies a search finds",
            "type": "boolean",
            "description": "Search returns a company name, domain and identifier and costs no provider credits. Turning this on runs enrichment over each result so the rows carry technology, spend and firmographics, which does spend credits. Turn it off to build a cheap list first and enrich it in a second run.",
            "default": true
          },
          "installsVerifiedFrom": {
            "title": "Technology verified from",
            "type": "string",
            "description": "Only return installed technology last verified on or after this date, as YYYY-MM-DD. This is how you exclude detections that have gone stale."
          },
          "installsVerifiedTo": {
            "title": "Technology verified to",
            "type": "string",
            "description": "Only return installed technology last verified on or before this date, as YYYY-MM-DD."
          },
          "technologiesPerCompany": {
            "title": "Technologies per company",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap how many installed technology records come back for each company. A large enterprise can have hundreds, and the provider charges by what is returned, so this is a direct control on credit cost."
          },
          "matchCompanies": {
            "title": "Companies to match",
            "type": "array",
            "description": "Companies to resolve to the provider's own identifier, in match mode. Each entry is either a plain name or domain, or an object with name, domain and country, plus an optional customer_id echoed back so you can join the answer to your own record. Ten go into each request."
          },
          "matchesPerCompany": {
            "title": "Matches per company",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many candidate matches to return for each company in match mode, up to 10. More than one is useful when a company name is ambiguous and you want to pick rather than accept.",
            "default": 1
          },
          "estimateCredits": {
            "title": "Estimate credit cost first",
            "type": "boolean",
            "description": "Ask the provider what each enrichment batch will cost before sending it, and report the running total in the log. The estimate endpoint is free and spends nothing, so this only costs an extra request per batch.",
            "default": true
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many rows. In search mode this is the main control on how much a run costs, both here and in provider credits.",
            "default": 100
          },
          "requestsPerMinute": {
            "title": "Requests per minute",
            "minimum": 1,
            "maximum": 900,
            "type": "integer",
            "description": "How fast this actor calls the provider. The documented limit is 25 requests a second counted per request rather than per company, so batching matters more than pacing here. This is capped at 900 a minute.",
            "default": 300
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}