> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thedatacity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Filter companies

> Returns filtered companies and aggregations as host-defined JSON.



## OpenAPI

````yaml /global-api/fr.openapi.json post /v1/fr/companies
openapi: 3.1.0
info:
  title: The Data City — France company data
  description: >-
    Company data for France, served through The Data City public API gateway.


    Authenticate with an API key as a bearer token. Rate limit is 60 requests
    per minute per key. Call GET /v1/fr/filters before filtering: sector codes
    and location values cannot be guessed, and an unrecognised value returns an
    empty result rather than an error.
  termsOfService: https://thedatacity.com/terms-and-conditions/
  contact:
    name: The Data City
    email: hello@thedatacity.com
  version: v1
servers:
  - url: https://global-api.thedatacity.com
    description: Production
security:
  - ApiKey: []
tags:
  - name: Companies
  - name: Search
  - name: Filters
  - name: Lookups
  - name: Classification
  - name: Metadata
paths:
  /v1/fr/companies:
    post:
      tags:
        - Companies
      summary: Filter companies
      description: Returns filtered companies and aggregations as host-defined JSON.
      operationId: fr_post_companies
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyFilters'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FilteredCompanies'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: No API key was supplied, or it is not valid for this environment.
        '422':
          description: Unprocessable Content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProblemDetails'
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
          description: >-
            Rate limit exceeded — 60 requests per minute per key. The
            retry-after header gives the number of seconds to wait.
          headers:
            retry-after:
              description: Seconds to wait before retrying.
              schema:
                type: integer
        '500':
          description: Internal Server Error
components:
  schemas:
    CompanyFilters:
      type: object
      properties:
        NAFs:
          type: array
          items:
            type: string
          description: Filter by NAF sections (broader business activity categories)
          nullable: true
        Name:
          maxLength: 500
          minLength: 0
          type: string
          description: Filter by company name (partial match)
          nullable: true
        Country:
          maxLength: 100
          minLength: 0
          type: string
          description: Filter by country
          nullable: true
        EmployeeRange:
          maxLength: 20
          minLength: 0
          type: string
          description: Filter by employee range (e.g., "1-9", "10-49", "50-249", "250+")
          nullable: true
        LegalForm:
          maxLength: 150
          minLength: 0
          type: string
          description: >-
            Filter by legal form slug from `GET /api/filters`
            (`legalForms[].id`).
          nullable: true
        LegalForms:
          maxItems: 100
          type: array
          items:
            type: string
          description: >-
            Filter by one or more legal form slugs from `GET /api/filters`
            (`legalForms[].id`). Matches any listed form (OR).
          nullable: true
        HQPostcode:
          maxLength: 10
          minLength: 0
          pattern: ^[0-9]{5}$
          type: string
          description: Filter by headquarters postal code
          nullable: true
        Commune:
          maxItems: 50
          type: array
          items:
            type: string
          description: >-
            Filter by commune (municipality) names. Matches companies where
            headquarters postcode details contain the specified commune names.
          nullable: true
        DateOfIncorporation:
          type: string
          description: Filter by date of incorporation (exact match)
          format: date
          nullable: true
        IncorporationDateFrom:
          type: string
          description: Filter by date of incorporation (from date, inclusive)
          format: date
          nullable: true
        IncorporationDateTo:
          type: string
          description: Filter by date of incorporation (to date, inclusive)
          format: date
          nullable: true
        HasWebsite:
          type: boolean
          description: Filter companies that have a website
          nullable: true
        OperatingLocationAddresses:
          maxItems: 20
          type: array
          items:
            type: string
          description: Filter by operating location addresses (partial match)
          nullable: true
        OperatingLocationPostcodes:
          maxItems: 50
          type: array
          items:
            type: string
          description: Filter by operating location postcodes
          nullable: true
        OperatingLocationCommunes:
          maxItems: 50
          type: array
          items:
            type: string
          description: >-
            Filter by operating location communes (municipality names). Matches
            companies where any operating location postcode details contain the
            specified commune names.
          nullable: true
        OperatingLocationNAFCodes:
          type: array
          items:
            type: string
          description: Filter by operating location NAF codes
          nullable: true
        MinTurnover:
          maximum: 9223372036854776000
          minimum: 0
          type: integer
          description: Minimum annual turnover in euros
          format: int64
          nullable: true
        MaxTurnover:
          maximum: 9223372036854776000
          minimum: 0
          type: integer
          description: Maximum annual turnover in euros
          format: int64
          nullable: true
        MinEBIT:
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          type: integer
          description: Minimum EBIT (Earnings Before Interest and Taxes) in euros
          format: int64
          nullable: true
        MaxEBIT:
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          type: integer
          description: Maximum EBIT (Earnings Before Interest and Taxes) in euros
          format: int64
          nullable: true
        MinNetIncome:
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          type: integer
          description: Minimum net income in euros
          format: int64
          nullable: true
        MaxNetIncome:
          maximum: 9223372036854776000
          minimum: -9223372036854776000
          type: integer
          description: Maximum net income in euros
          format: int64
          nullable: true
        FinancialYearEnding:
          type: integer
          description: Filter by specific financial year ending
          format: int32
          nullable: true
        MinFinancialYearEnding:
          type: integer
          description: Minimum financial year ending
          format: int32
          nullable: true
        MaxFinancialYearEnding:
          type: integer
          description: Maximum financial year ending
          format: int32
          nullable: true
        AccountsType:
          maxLength: 50
          minLength: 0
          type: string
          description: Filter by accounts type (e.g., "Bilan", "Simplified")
          nullable: true
        RTICs:
          type: array
          items:
            type: string
          description: >-
            Filter by RTIC codes. Matches companies that have any of the
            specified RTIC codes.
          nullable: true
        LowerLatitude:
          maximum: 90
          minimum: -90
          type: number
          description: >-
            South edge of a geographic bounding box (minimum latitude),
            inclusive. WGS-84 decimal degrees.
          format: double
          nullable: true
        UpperLatitude:
          maximum: 90
          minimum: -90
          type: number
          description: >-
            North edge of a geographic bounding box (maximum latitude),
            inclusive. WGS-84 decimal degrees.
          format: double
          nullable: true
        LowerLongitude:
          maximum: 180
          minimum: -180
          type: number
          description: >-
            West edge of a geographic bounding box (minimum longitude),
            inclusive. WGS-84 decimal degrees.
          format: double
          nullable: true
        UpperLongitude:
          maximum: 180
          minimum: -180
          type: number
          description: >-
            East edge of a geographic bounding box (maximum longitude),
            inclusive. WGS-84 decimal degrees.
          format: double
          nullable: true
        Includes:
          maxItems: 5000
          type: array
          items:
            type: string
          description: Restrict results to these Siren (company) numbers.
          nullable: true
        Excludes:
          maxItems: 5000
          type: array
          items:
            type: string
          description: Exclude these Siren (company) numbers.
          nullable: true
        HasWebText:
          type: boolean
          description: Filter by companies that have web text
          nullable: true
        IncludeInsights:
          type: boolean
          description: >-
            When false, skips insight bucket aggregation. Omit or null for
            default (include insights).
          nullable: true
        IncludeTotalCount:
          type: boolean
          description: >-
            When false, skips total-count queries and omits `TotalCount` from
            the response. Omit or null for default (include total count).
          nullable: true
        IncludesLocations:
          type: boolean
          description: >-
            When true, nested location lists are loaded on each company. Omit or
            null for default (omit lists).
        Limit:
          maximum: 1000
          minimum: 1
          type: integer
          description: >-
            Maximum number of results to return (uses
            QueryConstants.MaxQueryLimit)
          format: int32
          nullable: true
        Offset:
          maximum: 2147483647
          minimum: 0
          type: integer
          description: 'Number of results to skip for pagination (default: 0)'
          format: int32
          nullable: true
        SortBy:
          maxItems: 10
          type: array
          items:
            $ref: '#/components/schemas/SortOption'
          description: Sort options for the results
          nullable: true
      additionalProperties: false
      description: >-
        Request model for filtering French companies with comprehensive search
        criteria
    FilteredCompanies:
      required:
        - Companies
      type: object
      properties:
        Companies:
          type: array
          items:
            $ref: '#/components/schemas/ProcessedCompany'
          description: List of companies matching the filter criteria
          nullable: true
        Insights:
          $ref: '#/components/schemas/Insights'
        TotalCount:
          type: integer
          description: >-
            Total number of companies matching the filter criteria (before
            pagination). Omitted when not requested.
          format: int32
          nullable: true
      additionalProperties: false
      description: >-
        Response model containing filtered companies with pagination and
        insights
    ProblemDetails:
      type: object
      properties:
        type:
          type: string
          nullable: true
        title:
          type: string
          nullable: true
        status:
          type: integer
          format: int32
          nullable: true
        detail:
          type: string
          nullable: true
        instance:
          type: string
          nullable: true
      additionalProperties: {}
    Problem:
      type: object
      description: Error response, following RFC 9457 (problem details for HTTP APIs).
      properties:
        type:
          type: string
          description: URI identifying the problem type.
        title:
          type: string
          description: Short, human-readable summary.
        status:
          type: integer
          description: HTTP status code.
        detail:
          type: string
          description: Explanation specific to this occurrence.
        instance:
          type: string
          description: The path that produced the error.
    SortOption:
      required:
        - Direction
        - Field
      type: object
      properties:
        Field:
          maxLength: 50
          minLength: 0
          type: string
          description: Column or logical field name to sort by.
        Direction:
          minLength: 1
          pattern: ^(ASC|DESC)$
          type: string
          description: '`ASC` or `DESC`.'
      additionalProperties: false
      description: Sort option for ordering query results.
    ProcessedCompany:
      required:
        - Name
        - Siren
      type: object
      properties:
        Website:
          type: string
          description: Company website URL. Hosts may override (e.g. normalise casing).
          nullable: true
        Description:
          type: string
          description: Company description or business activity summary
          nullable: true
        LegalForm:
          type: string
          description: Legal form of the company
          nullable: true
        EmployeeRange:
          type: string
          description: Employee count range bucket label
          nullable: true
        RTICs:
          type: array
          items:
            $ref: '#/components/schemas/RTIC'
          description: >-
            Real-Time Industrial Classifications (RTIC) associated with the
            company.
          nullable: true
        LogoURL:
          type: string
          description: URL of the company logo
          nullable: true
        ScreenshotURL:
          type: string
          description: URL of the company screenshot
          nullable: true
        OperatingLocationsCount:
          type: integer
          description: >-
            Number of operating or group locations stored on the company row
            (without returning the full list).
          format: int32
          nullable: true
        Siren:
          minLength: 1
          type: string
          description: >-
            Unique company identifier (French SIREN). Serialized as `Siren` in
            JSON for the France API.
        Country:
          type: string
          description: Country where the company is registered
          nullable: true
        Name:
          minLength: 1
          type: string
          description: Official company name
        CommonName:
          type: string
          description: Common or trading name of the company
          nullable: true
        Acronym:
          type: string
          description: Company acronym or abbreviation
          nullable: true
        HQAddress:
          type: string
          description: Headquarters address
          nullable: true
        HQPostcode:
          type: string
          description: Headquarters postal code
          nullable: true
        HQPostcodeDetails:
          $ref: '#/components/schemas/PostCodeDetail'
        HQCommune:
          type: string
          description: Commune (municipality) name for the headquarters postcode
          nullable: true
        DateOfIncorporation:
          type: string
          description: Date when the company was incorporated
          format: date
          nullable: true
        NAFSection:
          type: string
          description: NAF section (French business activity classification)
          nullable: true
        NAFCodes:
          type: array
          items:
            type: string
          description: NAF codes from Parquet (list column `NAFCodes`).
          nullable: true
        NAFCode:
          type: string
          description: >-
            Primary NAF code (French business activity classification). Filled
            from a dedicated `NAFCode` source column when present; otherwise the
            first entry of
            TDC_Global_Server_API_FR.Models.ProcessedCompany.NAFCodes.
          nullable: true
        NAFName:
          type: string
          description: Description of the NAF code
          nullable: true
        OperatingLocations:
          type: array
          items:
            $ref: '#/components/schemas/ProcessedCompanyLocation'
          description: List of operating locations for the company
          nullable: true
        FinancesByYear:
          type: array
          items:
            $ref: '#/components/schemas/ProcessedFinancials'
          description: >-
            Annual financial snapshots for this company (wire name
            `FinancesByYear`).
          nullable: true
        SimilarCompanies:
          type: array
          items:
            $ref: '#/components/schemas/SimilarCompany'
          description: Similar companies to the current company
          nullable: true
      additionalProperties: false
      description: Processed French company data with comprehensive business information
    Insights:
      type: object
      properties:
        EmployeeRanges:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of employee ranges in the filtered results
          nullable: true
        LegalForms:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of legal forms in the filtered results
          nullable: true
        IncorporationDates:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of incorporation dates in the filtered results
          nullable: true
        RTICs:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: >-
            Distribution of Real-Time Industrial Classifications (RTIC) in the
            filtered results.
          nullable: true
        NAFs:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of NAFs in the filtered results
          nullable: true
        Communes:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Distribution of communes (municipalities) in the filtered results
          nullable: true
      additionalProperties: false
      description: Aggregated insights about filtered company data
    RTIC:
      type: object
      properties:
        CompanyNumber:
          type: string
          description: >-
            Company identifier (RTIC parquet key column, aliased to
            `CompanyNumber` in SQL).
          nullable: true
        SectorCode:
          type: string
          description: RTIC sector code.
          nullable: true
        SectorName:
          type: string
          description: RTIC sector name.
          nullable: true
        VerticalCode:
          type: string
          description: RTIC vertical code.
          nullable: true
        VerticalName:
          type: string
          description: RTIC vertical name.
          nullable: true
        Score:
          type: number
          description: Classification score from the RTIC model.
          format: double
          nullable: true
        WordsMatched:
          type: integer
          description: Number of words matched when classifying.
          format: int32
          nullable: true
        Name:
          type: string
          description: Optional display name (when present in source data).
          nullable: true
      additionalProperties: false
      description: >-
        Real-Time Industrial Classifications (RTIC) row. Parquet company id is
        selected as TDC_Global_Server_API_Core.Models.RTIC.CompanyNumber (see
        TDC_Global_Server_API_Core.Services.RTICService). JSON uses the property
        name `CompanyNumber`; country hosts may use different JSON names for the
        root company identifier (e.g. France exposes `Siren` on the company
        payload).
    PostCodeDetail:
      type: object
      properties:
        code_commune_INSEE:
          type: string
          description: INSEE commune code
          nullable: true
        nom_commune_postal:
          type: string
          description: Postal commune name
          nullable: true
        code_postal:
          type: string
          description: Postal code
          nullable: true
        libelle_acheminement:
          type: string
          description: Routing label for mail delivery
          nullable: true
        ligne_5:
          type: string
          description: Fifth line of the address
          nullable: true
        latitude:
          type: number
          description: Latitude coordinate
          format: double
          nullable: true
        longitude:
          type: number
          description: Longitude coordinate
          format: double
          nullable: true
        code_commune:
          type: string
          description: Commune code
          nullable: true
        article:
          type: string
          description: Address article (e.g., "de", "du")
          nullable: true
        nom_commune:
          type: string
          description: Commune name
          nullable: true
        nom_commune_complet:
          type: string
          description: Full commune name
          nullable: true
        code_departement:
          type: string
          description: Department code
          nullable: true
        nom_departement:
          type: string
          description: Department name
          nullable: true
        code_region:
          type: string
          description: Region code
          nullable: true
        nom_region:
          type: string
          description: Region name
          nullable: true
      additionalProperties: false
      description: >-
        Details about a French postal code including commune and geographic
        information
    ProcessedCompanyLocation:
      required:
        - Address
        - Postcode
        - Siret
      type: object
      properties:
        Siret:
          minLength: 1
          type: string
          description: Unique SIRET identifier for the location
        DateEstablished:
          type: string
          description: Date when this location was established
          format: date
          nullable: true
        IsRegisteredHQ:
          type: boolean
          description: Indicates if this is the registered headquarters
        Address:
          minLength: 1
          type: string
          description: Full address of the location
        Postcode:
          minLength: 1
          type: string
          description: Postal code of the location
        Commune:
          type: string
          description: Commune (municipality) name for the location postcode
          nullable: true
        NAFCode:
          type: string
          description: NAF code for this specific location
          nullable: true
        NAFName:
          type: string
          description: Description of the NAF code for this location
          nullable: true
        EmployeeRange:
          type: string
          description: Employee count range for this location
          nullable: true
        Latitude:
          type: number
          description: Latitude coordinate of the location
          format: float
          nullable: true
        Longitude:
          type: number
          description: Longitude coordinate of the location
          format: float
          nullable: true
        PostcodeDetails:
          $ref: '#/components/schemas/PostCodeDetail'
        ParentCompanyNumber:
          type: string
          description: >-
            Parent company SIREN when this row was resolved via the location
            API.
          nullable: true
        ParentCompanyName:
          type: string
          description: >-
            Parent company legal name when
            TDC_Global_Server_API_FR.Models.ProcessedCompanyLocation.ParentCompanyNumber
            is set.
          nullable: true
      additionalProperties: false
      description: Operating location information for a company
    ProcessedFinancials:
      type: object
      properties:
        YearEnding:
          type: integer
          description: Year ending for the financial data
          format: int32
        AccountsDate:
          type: string
          description: Date when the accounts were filed
          format: date
          nullable: true
        AccountsType:
          type: string
          description: Type of accounts (e.g., "Bilan", "Simplified")
          nullable: true
        Turnover:
          type: integer
          description: Annual turnover in euros
          format: int64
          nullable: true
        EBIT:
          type: integer
          description: Earnings Before Interest and Taxes in euros
          format: int64
          nullable: true
        NetIncome:
          type: integer
          description: Net income in euros
          format: int64
          nullable: true
        EmployeesHere:
          type: integer
          description: >-
            Employees at this site for the year (US Infobel history; omitted
            when absent).
          format: int32
          nullable: true
        EmployeesTotal:
          type: integer
          description: >-
            Total employees for the year (US Infobel history; omitted when
            absent).
          format: int32
          nullable: true
      additionalProperties: false
      description: Financial data for a company for a specific year
    SimilarCompany:
      required:
        - CompanyNumber
        - SimilarityScore
      type: object
      properties:
        CompanyNumber:
          type: string
          description: >-
            The similar company identifier (host-specific format, e.g. SIREN or
            US company number).
          nullable: true
        SimilarityScore:
          type: number
          description: Similarity score for this pair.
          format: double
      additionalProperties: false
      description: Represents a similarity score between two companies (France API).
    IDNameCount:
      required:
        - ID
      type: object
      properties:
        ID:
          type: string
          description: Stable identifier (code or bucket key).
          nullable: true
        Name:
          type: string
          description: Human-readable label.
          nullable: true
        Count:
          type: integer
          description: Occurrence count when applicable.
          format: int32
          nullable: true
        Children:
          type: array
          items:
            $ref: '#/components/schemas/IDNameCount'
          description: Child nodes for hierarchical classifications.
          nullable: true
      additionalProperties: false
      description: >-
        Hierarchical filter or bucket item with optional child nodes (NAF/NAIC
        trees, score bands, etc.).
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        An API key issued by The Data City, sent as: Authorization: Bearer
        YOUR_KEY

````