API Access

Programmatic access to the National Office Listing Exchange. Pull listings into your own tools, CRM, or website in real time.

Data Environment: Test Data Contributing Firms: 0 of 10 founding firms active — data reflects test listings only.

What Is the 1MLX API?

The 1MLX API allows your firm's technology team to pull live listing data directly from 1MLX into your own internal systems — your CRM, your proprietary search tools, or your client-facing availability reports. Instead of logging in manually, your team connects once using a secure API key and receives up-to-date listing data automatically.

This means your internal platforms stay current with 1MLX listings without any manual effort.

To request access, complete the form below.

Overview

The 1MLX API provides RESTful access to office listing data across all participating brokerages. Use it to integrate 1MLX listings into your CRM, website, internal tools, or data analytics platform.

All API responses are returned in JSON format. The base URL for all endpoints is:

Base URL
https://api.1mlx.com/v1
API access is scaled to your firm's contribution to the exchange. The more listings you share, the more data you can access.

Authentication

All API requests must include your API key in the request header. Pass your key using the Authorization header with a Bearer prefix:

Request
curl https://api.1mlx.com/v1/listings \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"

Requests without a valid API key will return a 401 Unauthorized error.

API Keys

Your firm administrator can generate and manage API keys from the Dashboard. Each key is scoped to your firm's data.

Production Key Active
1mlx_live_••••••••••••••••••••••••
Created: Jan 15, 2026 Last used: 2 hours ago Requests today: 1,247
Keep your API key confidential. Do not expose it in client-side code, public repositories, or shared documents. If you suspect your key has been compromised, regenerate it immediately from the Dashboard.

Endpoints

Listings

GET /v1/listings Search and filter office listings

Returns a paginated list of office listings matching the specified filters.

ParameterTypeDescription
marketstringFilter by market (e.g., "Manhattan", "Chicago")
submarketstringFilter by submarket (e.g., "Midtown", "Loop")
min_sfintegerMinimum rentable square feet
max_sfintegerMaximum rentable square feet
max_rentnumberMaximum asking rent per RSF
lease_typestring"direct", "sublet", or "all" (default: "all")
statusstring"active", "pending", or "all" (default: "active")
pageintegerPage number (default: 1)
per_pageintegerResults per page, max 100 (default: 25)
Example Response
{
  "data": [
    {
      "id": "lst_8x7kM2nR",
      "building_code": "BLD-001",
      "address": "285 Fulton Street, New York, NY 10007",
      "suite": "8500",
      "floor": 85,
      "rsf": 12500,
      "asking_rent": 82.00,
      "lease_type": "direct",
      "available_date": "2026-04-01",
      "status": "active",
      "firm": "CBRE",
      "agents": ["Sarah Chen"]
    }
  ],
  "meta": {
    "total": 847,
    "page": 1,
    "per_page": 25,
    "total_pages": 34
  }
}
GET /v1/listings/{id} Get a single listing
POST /v1/listings Create a new listing
PUT /v1/listings/{id} Update an existing listing
DELETE /v1/listings/{id} Remove a listing

Buildings

GET /v1/buildings List all buildings for your firm
GET /v1/buildings/{id} Get building details with listings
POST /v1/buildings Add a new building

Agents

GET /v1/agents List agents for your firm
GET /v1/agents/{id} Get agent profile and listings

Rate Limits

API requests are rate-limited to ensure fair usage across all participants. Limits are applied per API key.

1,000
Requests / minute
50,000
Requests / day
100
Max results / page

Rate limit headers are included in every response:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 847
X-RateLimit-Reset: 1709510400

Error Codes

The API uses standard HTTP status codes. Error responses include a JSON body with details:

Error Response
{
  "error": {
    "code": "unauthorized",
    "message": "Invalid or expired API key.",
    "status": 401
  }
}
CodeMeaning
200Success
201Created successfully
400Bad request (invalid parameters)
401Unauthorized (invalid or missing API key)
403Forbidden (insufficient permissions)
404Resource not found
429Rate limit exceeded
500Internal server error

SDKs & Examples

Get started quickly with code examples in common languages:

Python

Python
import requests

API_KEY = "1mlx_live_YOUR_KEY_HERE"
BASE_URL = "https://api.1mlx.com/v1"

# Search for office listings in Manhattan
response = requests.get(
    f"{BASE_URL}/listings",
    headers={"Authorization": f"Bearer {API_KEY}"},
    params={
        "market": "Manhattan",
        "min_sf": 5000,
        "lease_type": "direct"
    }
)

listings = response.json()["data"]
for listing in listings:
    print(f"{listing['address']} Suite {listing['suite']} - {listing['rsf']} RSF @ ${listing['asking_rent']}/RSF")

JavaScript

JavaScript
const API_KEY = '1mlx_live_YOUR_KEY_HERE';

// Fetch active listings in Chicago
const response = await fetch(
  'https://api.1mlx.com/v1/listings?market=Chicago&status=active',
  {
    headers: {
      'Authorization': `Bearer ${API_KEY}`,
      'Content-Type': 'application/json'
    }
  }
);

const { data, meta } = await response.json();
console.log(`Found ${meta.total} listings`);
Need help integrating? Contact api-support@1mlx.com for assistance. Founding members receive priority support.