{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/generect-com/json-schema/generect-com-realtime-company-search-request-schema.json",
  "title": "RealtimeCompanySearchRequest",
  "x-generated": "2026-11-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/generect-com-openapi.yaml#/components/schemas/RealtimeCompanySearchRequest",
  "allOf": [
    {
      "$ref": "#/$defs/CompanySearchRequest"
    },
    {
      "type": "object",
      "properties": {
        "keywords": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Free-text keywords matched across company profiles (name, description, specialties); a company is included if it contains at least one. OR logic, max 10 keywords, up to 40 characters each. Examples: \"platform\", \"marketplace\", \"developer tools\"."
        },
        "technologies": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Technologies used by the company."
        },
        "num_of_followers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Follower count ranges: \"1-50\", \"51-100\", \"101-1000\", \"1001-5000\", \"5001+\"."
        },
        "company_names": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Search by specific company names or domains."
        },
        "recent_activities": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "Funding events in past 12 months",
              "Senior leadership changes in last 3 months"
            ]
          },
          "description": "Recent company events to filter on."
        },
        "department_headcount_growth": {
          "type": "object",
          "description": "Filter by growth of a single department (e.g. {\"name\": \"engineering\", \"min\": 5, \"max\": 50}).",
          "properties": {
            "name": {
              "type": "string"
            },
            "min": {
              "type": "number"
            },
            "max": {
              "type": "number"
            }
          }
        },
        "revenues_range": {
          "type": "object",
          "description": "Revenue filter with min/max (e.g. {\"min\": 1000000, \"max\": 50000000}).",
          "properties": {
            "min": {
              "type": "number"
            },
            "max": {
              "type": "number"
            }
          }
        },
        "department_headcount": {
          "type": "object",
          "description": "Filter by department size (e.g. {\"name\": \"engineering\", \"min\": 10, \"max\": 100}).",
          "properties": {
            "name": {
              "type": "string"
            },
            "min": {
              "type": "number"
            },
            "max": {
              "type": "number"
            }
          }
        },
        "headcount_growth": {
          "type": "object",
          "description": "Filter by headcount growth percentage (e.g. {\"min\": 5, \"max\": 50}).",
          "properties": {
            "min": {
              "type": "number"
            },
            "max": {
              "type": "number"
            }
          }
        },
        "hiring_on_linkedin": {
          "type": "boolean",
          "description": "Filter for companies actively hiring on LinkedIn.",
          "default": false
        },
        "linkedins_links": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Filter by specific LinkedIn company URLs."
        },
        "include_total_count": {
          "type": "boolean",
          "default": false,
          "description": "Include `results_count` — how many companies match the filters in total, beyond the page you asked for — in the response. Without it the response carries only the page itself. The companies counterpart of the lead-search flag of the same name, and likewise an estimate rather than an exact total."
        }
      }
    }
  ],
  "$defs": {
    "CompanySearchRequest": {
      "type": "object",
      "properties": {
        "industries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Industries of the target companies; a company is included if it matches at least one. Values follow LinkedIn's industry taxonomy. Examples: \"Software Development\", \"Financial Services\", \"Information Technology\"."
        },
        "exclude_industries": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Industries to exclude."
        },
        "sub_industries": {
          "type": "boolean",
          "default": false,
          "description": "Controls how the `industries` filter maps onto LinkedIn's industry taxonomy. By default (`false`), a selected industry also matches companies in its sub-industries. Set to `true` to match only the industries you specify and exclude their sub-industries, for finer sub-category targeting — for example, \"Manufacturing\" without \"Chemicals\"."
        },
        "headcounts": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Company size, as employee-count ranges; a company is included if it falls into at least one. Allowed values: \"1-10\", \"11-50\", \"51-200\", \"201-500\", \"501-1000\", \"1001-5000\", \"5001-10000\", \"10 000+\"."
        },
        "locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Company headquarters locations — matches across cities, states/regions and countries; a company is included if its HQ matches at least one. Examples: \"United States\", \"San Francisco, California, United States\", \"Germany\"."
        },
        "exclude_locations": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Locations to exclude."
        },
        "company_types": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Company types: \"Public Company\", \"Privately Held\", \"Non Profit\", \"Government Agency\", \"Educational\", etc."
        },
        "exclude_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Exclude companies by LinkedIn ID or URN."
        },
        "exclude_domains": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Exclude companies by domain."
        },
        "limit_by": {
          "type": "integer",
          "description": "Maximum number of companies to return (1-1600)."
        },
        "offset_by": {
          "type": "integer",
          "description": "Number of companies to skip (0-1599, for pagination)."
        },
        "strict": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Fields to apply strict matching on (e.g. \"company_locations\")."
        },
        "apply_domain_blocklist": {
          "type": "boolean",
          "default": true,
          "description": "Apply Generect's blocked-domain list, which removes staffing agencies, directories and similar low-signal records that match broad industry filters. Set to `false` to receive them. On by default on the company search endpoints, in both database and realtime mode; the company-leads endpoints do not apply it. In database search the exclusion happens before `results_count`, so the count always matches what the pages can deliver; in realtime the records are dropped after retrieval, so a page may hold fewer companies than `results_count` implies."
        },
        "include_companies_without_website": {
          "type": "boolean",
          "default": false,
          "description": "Also return companies that have a LinkedIn page but no website, such as many hospitals, clinics and local businesses. Off by default: the company search endpoints drop every company without a website, in both database and realtime mode. Such a company has no website and no domain, so there are no corporate emails to find for its people and lead matching by domain does not work for it; an `exclude_domains` entry cannot remove it (use `exclude_ids`). Each one is returned and billed as a result like any other, and many of them have few or no leads on LinkedIn. The other quality rules stay: a company with zero employees on LinkedIn is still dropped, and the blocked-domain list still applies to companies that have a website. In database search these companies are counted in `results_count`; the realtime count comes from LinkedIn and always included them. The company-leads endpoints do not read it."
        }
      }
    }
  }
}