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

# Property Lookup

> Search for properties and return paginated property IDs based on location, coordinates, or property attributes. Use this endpoint to discover properties matching your criteria, then retrieve full details using the Bulk Property Details endpoint.

<Warning>Requires Explore Pro access.</Warning>



## OpenAPI

````yaml /openapi/v1/schema.json get /properties/lookup
openapi: 3.0.3
info:
  title: ApartmentIQ API
  version: 1.14.0
  termsOfService: https://www.getapartmentiq.com/terms
  x-logo:
    url: https://developers.apartmentiq.io/logo.svg
    altText: ApartmentIQ
  description: >-
    ApartmentIQ API providing Accounts, Market Surveys, Markets, Market
    Narratives, and Forecasts endpoints to access accounts, comp sets, market
    survey tables, units, floorplans, and market-based property data. See
    documentation pages for authentication, errors, and rate limits.
servers:
  - url: https://data.apartmentiq.io/apartmentiq/api/v1
security:
  - oauth2: []
tags:
  - name: Accounts
    description: >-
      Endpoints for listing the ApartmentIQ accounts accessible to the
      authenticated user.
  - name: Market Surveys
    description: >-
      Market Survey endpoints can be used to access data related to your market
      surveys within ApartmentIQ. The ApartmentIQ API refers to the list of
      properties within your market surveys as a comp set, or competitive set.
      In the rest of this document, comp set and competitive set will be used
      interchangeably.
  - name: Markets
    description: Endpoints used to access market data.
  - name: Bulk Data Export
    description: >-
      Endpoints for requesting and downloading historical property data through
      asynchronous batch jobs. Submit a job request, monitor its status, and
      download results when ready.
  - name: Forecasts
    description: >-
      Endpoints for retrieving modeled future time-series forecast data for
      geographic boundaries and properties. Forecast data spans from the
      beginning of the current month up to 5 years in the future. Requires
      Explore Pro access.
paths:
  /properties/lookup:
    get:
      tags:
        - Markets
      summary: Property Lookup
      description: >-
        Search for properties and return paginated property IDs based on
        location, coordinates, or property attributes. Use this endpoint to
        discover properties matching your criteria, then retrieve full details
        using the Bulk Property Details endpoint.


        <Warning>Requires Explore Pro access.</Warning>
      operationId: lookupProperties
      parameters:
        - name: account_id
          in: query
          description: ID of the account (required for authorization).
          required: true
          schema:
            type: integer
          example: 2222
        - name: city
          in: query
          description: Filter by city name.
          required: false
          schema:
            type: string
          example: Madison
        - name: state
          in: query
          description: Filter by US state (two-letter abbreviation).
          required: false
          schema:
            type: string
          example: WI
        - name: address
          in: query
          description: Filter by address (partial match supported).
          required: false
          schema:
            type: string
          example: 123 Main St
        - name: property_name
          in: query
          description: Filter by property name (partial match supported).
          required: false
          schema:
            type: string
          example: Luxe
        - name: property_url
          in: query
          description: Filter by property URL (partial match supported).
          required: false
          schema:
            type: string
          example: example.com
        - name: latitude
          in: query
          description: >-
            Latitude for coordinate-based search. Use with longitude. Can also
            be specified as 'lat'.
          required: false
          schema:
            type: number
            format: double
          example: 43.0731
        - name: longitude
          in: query
          description: >-
            Longitude for coordinate-based search. Use with latitude. Can also
            be specified as 'lng'.
          required: false
          schema:
            type: number
            format: double
          example: -89.4012
        - name: radius
          in: query
          description: >-
            Search radius in miles when using coordinate-based search. Defaults
            to 0.5 miles.
          required: false
          schema:
            type: number
            format: double
            default: 0.5
          example: 2
        - name: total_units_gte
          in: query
          description: Minimum total number of units.
          required: false
          schema:
            type: integer
          example: 100
        - name: total_units_lte
          in: query
          description: Maximum total number of units.
          required: false
          schema:
            type: integer
          example: 500
        - name: number_of_stories_gte
          in: query
          description: Minimum number of stories/floors.
          required: false
          schema:
            type: integer
          example: 3
        - name: property_class
          in: query
          description: Filter by property classification grade.
          required: false
          schema:
            type: string
            enum:
              - A
              - B
              - C
          example: A
        - name: loan_maturity_date_gte
          in: query
          description: >-
            Minimum loan maturity date (YYYY-MM-DD). Returns properties with
            loan maturity on or after this date.
          required: false
          schema:
            type: string
            format: date
          example: '2025-01-01'
        - name: loan_maturity_date_lte
          in: query
          description: >-
            Maximum loan maturity date (YYYY-MM-DD). Returns properties with
            loan maturity on or before this date.
          required: false
          schema:
            type: string
            format: date
          example: '2027-12-31'
        - name: transaction_cap_rate_gte
          in: query
          description: >-
            Minimum transaction cap rate. Returns properties with a recorded
            sale at or above this cap rate.
          required: false
          schema:
            type: number
          example: 4.5
        - name: transaction_cap_rate_lte
          in: query
          description: >-
            Maximum transaction cap rate. Returns properties with a recorded
            sale at or below this cap rate.
          required: false
          schema:
            type: number
          example: 7
        - name: transaction_date_closed_gte
          in: query
          description: >-
            Earliest transaction close date (YYYY-MM-DD). Returns properties
            sold on or after this date.
          required: false
          schema:
            type: string
            format: date
          example: '2024-01-01'
        - name: transaction_date_closed_lte
          in: query
          description: >-
            Latest transaction close date (YYYY-MM-DD). Returns properties sold
            on or before this date.
          required: false
          schema:
            type: string
            format: date
          example: '2026-12-31'
        - name: transaction_price_per_unit_gte
          in: query
          description: >-
            Minimum transaction price per unit. Returns properties sold at or
            above this price per unit.
          required: false
          schema:
            type: number
          example: 150000
        - name: transaction_price_per_unit_lte
          in: query
          description: >-
            Maximum transaction price per unit. Returns properties sold at or
            below this price per unit.
          required: false
          schema:
            type: number
          example: 350000
        - name: page
          in: query
          description: Page number for pagination (starts at 1).
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
          example: 1
        - name: per_page
          in: query
          description: Number of results per page. Maximum 200.
          required: false
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 200
          example: 50
      responses:
        '200':
          description: Property IDs retrieved successfully
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - pagination
                properties:
                  data:
                    type: array
                    items:
                      type: integer
                    description: Array of property IDs matching the search criteria.
                  pagination:
                    type: object
                    required:
                      - current_page
                      - total_pages
                      - total_count
                      - per_page
                    properties:
                      current_page:
                        type: integer
                        description: Current page number.
                        example: 1
                      total_pages:
                        type: integer
                        description: Total number of pages available.
                        example: 595
                      total_count:
                        type: integer
                        description: Total number of properties matching the criteria.
                        example: 1190
                      per_page:
                        type: integer
                        description: Number of results per page.
                        example: 50
        '400':
          description: The request was invalid or malformed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized - Invalid or missing authentication
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden - Insufficient permissions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
components:
  schemas:
    Error:
      type: object
      description: >-
        Error response payload. Most errors include error and optional message;
        some validation responses include errors; quota responses include quota
        fields.
      properties:
        error:
          type: string
          description: Short error message
          example: Invalid parameter
        message:
          type: string
          description: Optional detailed message
          example: account_id is required
        errors:
          type: array
          description: Optional list of validation errors.
          items:
            type: string
        quota_limit:
          type: integer
          description: >-
            Quota limit that applied to the request when an account quota was
            exceeded.
        quota_usage:
          type: integer
          description: Current quota usage when an account quota was exceeded.
  responses:
    RateLimitExceeded:
      description: >-
        Rate limit exceeded. Inspect the rate limit headers and wait before
        retrying.
      headers:
        X-RateLimit-Limit:
          description: The limit that applied to the request.
          schema:
            type: string
        X-RateLimit-Reset-After:
          description: The rate limit window length, in seconds.
          schema:
            type: string
        X-RateLimit-Reset:
          description: Unix timestamp when the current window resets.
          schema:
            type: string
        Retry-After:
          description: Seconds to wait before retrying the request.
          schema:
            type: string
      content:
        text/plain:
          schema:
            type: string
          example: |
            You have exceeded the rate limit for this API.
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Trial API quota limit exceeded
            quota_limit: 5000
            quota_usage: 5001
  securitySchemes:
    oauth2:
      type: oauth2
      description: >-
        Enter a Bearer token obtained via the OAuth client credentials flow or
        from the Access Tokens tab in your account settings.
      flows:
        clientCredentials:
          tokenUrl: https://data.apartmentiq.io/oauth/token
          scopes: {}

````