> ## Documentation Index
> Fetch the complete documentation index at: https://developers.beta.dealroom.co/llms.txt
> Use this file to discover all available pages before exploring further.

# List university map points

> Slim university payload for map rendering (the startup map's dot layer): one point per university with HQ coordinates and an optional `size_by` metric value. Accepts the same filter syntax as `/universities`. When `size_by` is set, points sort by that dimension descending, so capped responses keep the highest-value points. Universities without usable HQ coordinates are omitted. Monetary values are USD. For per-area counts (the map's choropleth layer), use the aggregate endpoint over the entities source narrowed to the subtype: GET /analytics/aggregate/entities?metric=count&group_by=map_area&filter=organization_subtype[eq]:university.



## OpenAPI

````yaml /openapi.yaml get /data/universities/geo
openapi: 3.1.0
info:
  title: Dealroom API
  version: '2026-09-01'
  description: >-
    REST API for the Dealroom platform — companies, funds, founders, investors,
    funding rounds, valuations, taxonomy, news, and aggregate analytics across
    all of them. Authentication uses Auth0 (Bearer JWT or OAuth2
    client_credentials). All endpoints are versioned via the `API-Version`
    header (Stripe-style date-based versioning).
  contact:
    name: Dealroom API support
    email: support@dealroom.co
    url: https://dealroom.co
  termsOfService: https://dealroom.co/terms
  license:
    name: Proprietary — Dealroom commercial license
    url: https://dealroom.co/terms
servers:
  - url: https://api.beta.dealroom.app
    description: Beta
security:
  - bearerAuth: []
  - oauth2: []
tags:
  - name: Discovery
    description: API root discovery and functional namespaces.
  - name: Entities
    description: >-
      Companies, investors, people, universities, and other organisations.
      Filter, sort, and paginate the unified entity index. The term `investor`
      refers to the investment firm; `fund` refers to the capital vehicle it
      raises.
  - name: Companies
    description: >-
      Company profiles — the `organization_subtype = company` subset of entities
      (excludes investors, universities, and gov/NGOs). Same response shape as
      the entity index, scoped to companies.
  - name: Universities
    description: >-
      University profiles — the `organization_subtype = university` subset of
      entities. The `university` sub-object carries alumni metrics.
  - name: Government & NGO
    description: >-
      Government bodies and NGOs — the `organization_subtype = gov_ngo` subset
      of entities.
  - name: Transactions
    description: >-
      Funding rounds, equity events, debt, grants, exits, and other
      company-level financial events.
  - name: Valuations
    description: Company valuation history by year and month.
  - name: Investors
    description: >-
      Investor profiles (VCs, corporates, angels, family offices, governments).
      Subset of entities where `is_investor = true`. An investor is the firm
      that makes investments; the capital vehicles it raises are funds available
      via `/investors/{id}/funds`.
  - name: Funds
    description: >-
      Funds — the capital vehicles investor firms raise (e.g. "Fund III", $200M,
      2024). Browse/filter by manager, type, size, and vintage; each fund links
      to its manager (GP). Fund size (`amount`) converts to the requested
      `?currency=` (default USD); `amount_source` carries the original
      native-currency amount.
  - name: People
    description: >-
      Person profiles (founders, executives, angels, and others). Subset of
      entities where `entity_type = 'person'`. Same response shape as founders,
      with company associations, education, and backgrounds.
  - name: Founders
    description: >-
      Founder profiles with company associations and education history. Subset
      of entities where `is_founder = true`.
  - name: News
    description: Curated news articles about companies, funds, deals, sectors, and events.
  - name: Jobs
    description: Active job openings posted by companies, with hiring-trend signals.
  - name: Filters
    description: >-
      Filter registry discovery and value lookup. Use `/reference/filters` to
      discover available filters per scope and `/reference/filters/:key/values`
      to look up valid values.
  - name: Health
    description: Liveness probe (public, unauthenticated).
  - name: Search
    description: >-
      Cross-resource fuzzy search across companies, investors, people,
      universities, and government & NGO bodies.
paths:
  /data/universities/geo:
    get:
      tags:
        - Universities
      summary: List university map points
      description: >-
        Slim university payload for map rendering (the startup map's dot layer):
        one point per university with HQ coordinates and an optional `size_by`
        metric value. Accepts the same filter syntax as `/universities`. When
        `size_by` is set, points sort by that dimension descending, so capped
        responses keep the highest-value points. Universities without usable HQ
        coordinates are omitted. Monetary values are USD. For per-area counts
        (the map's choropleth layer), use the aggregate endpoint over the
        entities source narrowed to the subtype: GET
        /analytics/aggregate/entities?metric=count&group_by=map_area&filter=organization_subtype[eq]:university.
      operationId: listUniversityGeoPoints
      parameters:
        - schema:
            type: string
            description: >-
              Filter expression for universities — identical syntax and
              semantics to the `/universities` list filter.
            example: and(alumni_founder_count[gte]:100,hq_location[eq]:233)
          required: false
          description: >-
            Filter expression for universities — identical syntax and semantics
            to the `/universities` list filter.
          name: filter
          in: query
        - schema:
            type: string
            enum:
              - total_funding
              - employee_count
              - latest_valuation
              - total_invested
              - total_investments_count
              - alumni_count
              - alumni_founder_count
            description: >-
              Numeric dimension returned as each point's `value` (for
              proportional dot sizing). Monetary dimensions are USD. Also sorts
              the result descending, so a capped response keeps the
              highest-value points. Omitted → `value` is null and the default
              sort applies.
            example: total_funding
          required: false
          description: >-
            Numeric dimension returned as each point's `value` (for proportional
            dot sizing). Monetary dimensions are USD. Also sorts the result
            descending, so a capped response keeps the highest-value points.
            Omitted → `value` is null and the default sort applies.
          name: size_by
          in: query
        - schema:
            type: integer
            format: int32
            minimum: 1
            maximum: 5000
            default: 5000
            description: Number of results to return (1-5000, default 5000)
            example: 5000
          required: false
          description: Number of results to return (1-5000, default 5000)
          name: limit
          in: query
        - schema:
            type: integer
            format: int32
            minimum: 0
            default: 0
            description: >-
              Number of results to skip before returning data. Combine with
              `limit` for offset-based pagination.
            example: 0
          required: false
          description: >-
            Number of results to skip before returning data. Combine with
            `limit` for offset-based pagination.
          name: offset
          in: query
        - $ref: '#/components/parameters/ApiVersion'
      responses:
        '200':
          description: University map points
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UniversityGeoResponse'
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
        '401':
          description: >-
            Authentication required. The `Authorization` header was missing, the
            bearer token was malformed, or the token failed signature / expiry
            validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
        '403':
          description: >-
            Authentication succeeded but the caller's token does not include the
            permission required for this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
        '422':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
        '429':
          description: Rate limit exceeded.
          headers:
            Deprecation:
              $ref: '#/components/headers/Deprecation'
            Sunset:
              $ref: '#/components/headers/Sunset'
            Retry-After:
              schema:
                type: string
                description: Seconds to wait before retrying.
                example: '1'
              required: true
              description: Seconds to wait before retrying.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - oauth2:
            - read:entities
        - bearerAuth:
            - read:entities
components:
  parameters:
    ApiVersion:
      name: API-Version
      in: header
      required: false
      schema:
        type: string
        format: date
        example: '2026-09-01'
      description: >-
        Pin a Stripe-style date-based API version (`YYYY-MM-DD`). Omit to use
        the latest version (`2026-09-01`). A pinned version is supported for 30
        days after it is superseded, after which it returns `400`.
  schemas:
    UniversityGeoResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/UniversityGeoPoint'
        page:
          type: object
          properties:
            total:
              type: number
            limit:
              type: number
            offset:
              type: number
            next_cursor:
              type:
                - string
                - 'null'
              description: >-
                Opaque cursor for the next page. Null when no further pages
                exist.
            prev_cursor:
              type:
                - string
                - 'null'
              description: >-
                Opaque cursor for the previous page. Null when on the first
                page.
            capped:
              type: boolean
              description: >-
                True when the requested page size was reduced to the
                per-tier/ecosystem row cap.
            tier:
              type: string
              enum:
                - anonymous
                - free
                - premium
              description: >-
                The access tier applied to this request (anonymous, free,
                premium).
            ecosystem:
              type:
                - string
                - 'null'
              description: >-
                Slug of the active ecosystem subdomain, or null when none is in
                scope.
          required:
            - limit
            - offset
            - next_cursor
            - prev_cursor
      required:
        - data
        - page
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - VALIDATION_ERROR
                - NOT_FOUND
                - UNAUTHORIZED
                - DATABASE_ERROR
                - UNKNOWN_FILTER
                - FILTER_VALIDATION_ERROR
                - UNSUPPORTED_OPERATOR
                - FILTER_PARSE_ERROR
                - QUERY_TIMEOUT
                - INTERNAL_SERVER_ERROR
                - INVALID_ENTITY_ID
                - PAGINATION_DEPTH_EXCEEDED
                - SCHEMA_ERROR
                - FORBIDDEN
                - EXTERNAL_SERVICE_ERROR
                - ACCOUNT_REQUIRED
                - SERVICE_UNAVAILABLE
                - RATE_LIMITED
                - LIST_LOCKED
                - PATH_RENAMED
                - ENDPOINT_REMOVED
              description: Stable machine-readable error code.
            message:
              type: string
            details:
              anyOf:
                - type: array
                  items:
                    type: object
                    properties:
                      path:
                        type: string
                      message:
                        type: string
                    required:
                      - path
                      - message
                - type: object
                  additionalProperties:
                    anyOf:
                      - type: string
                      - type: number
                      - type: boolean
          required:
            - code
            - message
      required:
        - error
    UniversityGeoPoint:
      type: object
      properties:
        id:
          type: string
          description: Stable UUID of the university
          example: c7f4a2b9-1e6d-4c3a-8b5f-2a9d7e4c6b1f
        name:
          type:
            - string
            - 'null'
        lat:
          type: number
          description: HQ latitude (WGS84)
        lon:
          type: number
          description: HQ longitude (WGS84)
        logo:
          type:
            - string
            - 'null'
          description: >-
            Logo/avatar image URL for the university (powers the map's logo
            layer); null when the entity has no image. May be a bare host/path
            or a full URL.
        value:
          type:
            - number
            - 'null'
          description: >-
            The `size_by` dimension's value for this university (USD for
            monetary dimensions); null when there is no value or no `size_by`
            was requested
      required:
        - id
        - name
        - lat
        - lon
        - logo
        - value
  headers:
    Deprecation:
      description: >-
        Present when the request pinned a superseded version: the date that
        version was deprecated (`YYYY-MM-DD`).
      schema:
        type: string
        format: date
    Sunset:
      description: >-
        Present when the request pinned a superseded version: the date the
        version stops working and requests begin returning `400` (`YYYY-MM-DD`).
      schema:
        type: string
        format: date
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Auth0 JWT access token. Paste a token obtained from your preferred
        OAuth2 flow. For machine-to-machine use, the OAuth2 client_credentials
        scheme below can mint a token directly from your `client_id` /
        `client_secret` inside the Swagger UI Authorize dialog.
    oauth2:
      type: oauth2
      description: >-
        OAuth2 client-credentials flow against the Dealroom Auth0 tenant. Use
        the `client_id` / `client_secret` from a Programmatic API key. Tokens
        are valid for 24h — Swagger UI will reuse the same token across
        operations. Revoking or deactivating a key rejects it on the next
        request (within a ≤5-minute server-side cache window), not at token
        expiry.
      flows:
        clientCredentials:
          tokenUrl: https://accounts.dealroom.co/oauth/token
          scopes:
            read:entities: Grant the read:entities permission
            read:transactions: Grant the read:transactions permission
            read:valuations: Grant the read:valuations permission
            read:investors: Grant the read:investors permission
            read:founders: Grant the read:founders permission
            read:dimensions: Grant the read:dimensions permission
            read:timeseries: Grant the read:timeseries permission
            read:aggregate: Grant the read:aggregate permission
            read:funding-analytics: Grant the read:funding-analytics permission
            read:ecosystems: Grant the read:ecosystems permission
            write:ecosystems: Grant the write:ecosystems permission
            delete:ecosystems: Grant the delete:ecosystems permission
            write:landscapes: Grant the write:landscapes permission
            delete:landscapes: Grant the delete:landscapes permission
            read:metrics: Grant the read:metrics permission
            create:api-keys: Grant the create:api-keys permission
            read:api-keys: Grant the read:api-keys permission
            delete:api-keys: Grant the delete:api-keys permission
            admin:api-keys: Grant the admin:api-keys permission
            read:usage: Grant the read:usage permission
            read:news: Grant the read:news permission
            read:jobs: Grant the read:jobs permission
            read:people: Grant the read:people permission
            read:teams: Grant the read:teams permission
            write:teams: Grant the write:teams permission
            delete:teams: Grant the delete:teams permission
            manage:team-members: Grant the manage:team-members permission
            read:search: Grant the read:search permission
            write:ai-features: Grant the write:ai-features permission

````