Live

Crexi logo

Crexi API and MCP server

crexi.com

Crexi has no public API (checked 11 Oct 2026). Cotlet is a hosted MCP server and REST API for Crexi with 13 endpoints (9 read, 4 write): your AI agent signs in as you and does the work.

Category
Real estate
Endpoints
13 9 read, 4 write
Updated
How Cotlet connects your agent to Crexi
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 13 endpoints

    cotlet.dev/mcp/v1

  3. Crexi logo

    Crexi

    Signed in as you on crexi.com

You sign in once. We never store your password.

Official API

Does Crexi have an official API?

Crexi has no public API (checked 11 Oct 2026). Its only API is a one-way Listing API that pushes listings into Crexi, open to large data partners such as MLSs, brokerages and data providers after a data and legal review and a signed agreement.

What Crexi's own tools do compared with Cotlet
Task Crexi official Cotlet
List leads and their activity No Yes
Export lead reports No Exports are made by hand in the web app; a beta CRM Lead Sync pushes new leads to five CRMs for select PRO or Enterprise users Yes
Message leads on a listing No Yes
Listing impressions, page views and document opens No Yes
Run your saved searches No Yes
Search sales comps No Yes
Create a sale or lease listing Partly Listing API push, partners with a signed agreement only Yes
Change listing status No Yes

Sources: Crexi Help Center: Listing API overview · Crexi Help Center: Contact your leads · Crexi Help Center: Property overview dashboard · Crexi Help Center: Exporting data · Crexi Help Center: CRM Integrations FAQs

Common use cases

What can an AI agent do in Crexi?

Cotlet is best for commercial real estate brokers who want their AI agent to export leads, report listing activity and follow up with leads without running or fixing a server.

  • Export Crexi leads to your CRM or a sheet Runs: Weekly

    Export the Crexi leads from all my listings for the last 12 months, skip anyone already in my CRM sheet, and add the investors with the listing they engaged with. Your agent calls export_lead_report, get_export and list_leads.

  • Weekly listing activity report for your seller Runs: Weekly

    Write the weekly activity report for the seller of Oak Plaza Retail Center: impressions, page views, document opens and new leads by role, compared with last week. Your agent calls list_my_listings, get_listing_analytics and list_leads.

  • Email leads who opened your OM Runs: Weekly

    Email the investors who opened the OM on Oak Plaza Retail Center this week and invite them to the tour on Thursday at 10 am. Leave out brokers and anyone I already wrote to. Your agent calls list_my_listings, list_leads, get_lead and contact_leads.

  • New listings from a saved search Runs: Daily

    Run my saved search for Dallas retail under $3M and show me what is new since yesterday. Your agent calls list_saved_searches and run_saved_search.

  • Pull sales comps for a valuation

    Pull industrial sales comps within the Austin area of 1200 Oak Street from the last 2 years, keep buildings between 20,000 and 50,000 sq ft, and give me the price per square foot and cap rate range. Your agent calls search_comps.

Endpoints

What is the Crexi API?

Cotlet's Crexi API exposes 13 endpoints for your own Crexi account: list my listings, get listing, get listing analytics, list leads, get lead, get export, list saved searches, run saved search, search comps, export lead report, contact leads, create listing and update listing status. The list_my_listings endpoint returns your sale, lease and auction listings with status, price and address. Each endpoint takes simple JSON inputs like listing_id, limit or cursor and works both as an MCP tool for agents and as a REST call for scripts.

All endpoints · 13 total

missing one? request an endpoint

  • POST

    list_my_listings

    read

    Lists the listings in My Listings, with the type, the status Crexi shows, the asking price and the address. Use listing_id from each item in the other tools. Pages hold up to 100 listings; pass next_cursor back as cursor for the next page.

    POST /api/v1/crexi/list_my_listings

    Input

    Input: list_my_listings
    Parameter Type Description
    type enum sale, lease or auction. Default: all.
    status string Only listings with this status, as shown in My Listings.
    limit integer 1 to 100. Default: 50.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "listings": [
        {
          "listing_id": "1874523",
          "type": "sale",
          "name": "Oak Plaza Retail Center",
          "address": "1200 Oak Street, Austin, TX 78701",
          "status": "Active",
          "asking_price": 2850000
        },
        {
          "listing_id": "1869910",
          "type": "lease",
          "name": "120 Main St Suite 200",
          "address": "120 Main Street, Dallas, TX 75201",
          "status": "Active",
          "asking_price": null
        }
      ],
      "next_cursor": null
    }
  • POST

    get_listing

    read

    Returns one of your listings with its property details, asking price, description, attached documents and public URL. Use it to check what is live before changing status or contacting leads.

    POST /api/v1/crexi/get_listing

    Input

    Input: get_listing
    Parameter Type Description
    listing_id required string Listing ID from list_my_listings.

    Example response

    {
      "listing_id": "1874523",
      "type": "sale",
      "name": "Oak Plaza Retail Center",
      "address": "1200 Oak Street, Austin, TX 78701",
      "property_type": "Retail",
      "asking_price": 2850000,
      "status": "Active",
      "documents": [
        {
          "name": "Offering Memorandum",
          "url": "https://example.com/oak-plaza-om.pdf"
        }
      ],
      "url": "https://www.crexi.com/properties/1874523/texas-oak-plaza-retail-center"
    }
  • POST

    get_listing_analytics

    read

    Returns the numbers the property overview dashboard shows for one listing. Impressions count how often the listing was displayed, page views are unique visits from any user, visitors are logged-in users and document opens are views of files such as flyers and offering memorandums. Campaign figures (emails sent, opens, clicks) are returned for Pro members only.

    POST /api/v1/crexi/get_listing_analytics

    Input

    Input: get_listing_analytics
    Parameter Type Description
    listing_id required string Listing ID from list_my_listings.

    Example response

    {
      "listing_id": "1874523",
      "impressions": 4120,
      "page_views": 318,
      "visitors": 96,
      "document_opens": 41,
      "campaigns": {
        "emails_sent": 250,
        "opens": 112,
        "clicks": 37
      }
    }
  • POST

    list_leads

    read

    Lists leads across your listings, or on one listing, with the same filters as Lead Activity: level of interest, industry role and a date range. Pro members see full contact info and the time and type of each action; other plans see less. Pass lead_id to get_lead or lead_ids to contact_leads.

    POST /api/v1/crexi/list_leads

    Input

    Input: list_leads
    Parameter Type Description
    listing_id string Only leads on this listing. Default: all listings.
    interest string Level of interest, as Crexi shows it.
    industry_role string Industry role, as Crexi shows it, for example Investor or Broker.
    since date Only leads active on or after this date.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "leads": [
        {
          "lead_id": "ld_4102",
          "name": "Dana Whitfield",
          "company": "Northgate Capital",
          "industry_role": "Investor",
          "interest": "High",
          "listing_id": "1874523",
          "last_action": "Opened document",
          "last_activity_at": "2026-10-08T14:12:00Z"
        },
        {
          "lead_id": "ld_4107",
          "name": "Marcus Reyes",
          "company": "Reyes Holdings",
          "industry_role": "Investor",
          "interest": "Medium",
          "listing_id": "1874523",
          "last_action": "Viewed listing",
          "last_activity_at": "2026-10-07T09:40:00Z"
        }
      ],
      "next_cursor": null
    }
  • POST

    get_lead

    read

    Returns one lead with every action it took on your listings, as shown in Activity History, with the time and type of each action. Full detail needs Pro.

    POST /api/v1/crexi/get_lead

    Input

    Input: get_lead
    Parameter Type Description
    lead_id required string Lead ID from list_leads.

    Example response

    {
      "lead_id": "ld_4102",
      "name": "Dana Whitfield",
      "company": "Northgate Capital",
      "industry_role": "Investor",
      "activity": [
        {
          "listing_id": "1874523",
          "action": "Opened document",
          "at": "2026-10-08T14:12:00Z"
        },
        {
          "listing_id": "1874523",
          "action": "Viewed listing",
          "at": "2026-10-06T10:03:00Z"
        }
      ]
    }
  • POST

    get_export

    read

    Returns the status of one export from the Export hub. Pending means it waits in Crexi's queue, generating means it is running, completed means the file is ready, and error means it failed, in which case you can start it again. A completed export keeps its download link, so you can fetch it again later.

    POST /api/v1/crexi/get_export

    Input

    Input: get_export
    Parameter Type Description
    export_id required string Export ID from export_lead_report.

    Example response

    {
      "export_id": "ex_30911",
      "type": "lead_report",
      "status": "completed",
      "download_url": "https://www.crexi.com/dashboard/exports/ex_30911"
    }
  • POST

    list_saved_searches

    read

    Returns the marketplace searches saved in your account, by name. Pass a name or ID to run_saved_search.

    POST /api/v1/crexi/list_saved_searches

    Input

    No parameters.

    Example response

    {
      "searches": [
        {
          "saved_search": "Dallas retail under $3M"
        }
      ]
    }
  • POST

    search_comps

    read

    Searches the sales comps in Crexi Intelligence around a location. Each comp includes asking price, sale date, sale price, closing cap rate, address, square footage and listing brokers. The call fails with a plan error if the signed-in account has no Intelligence subscription.

    POST /api/v1/crexi/search_comps

    Input

    Input: search_comps
    Parameter Type Description
    location required string Address, city or ZIP code.
    property_type string Property type, as offered in Crexi Intelligence.
    sold_after date Only sales on or after this date.
    limit integer 1 to 100. Default: 25.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "comps": [
        {
          "address": "2210 Industrial Blvd, Austin, TX 78744",
          "property_type": "Industrial",
          "sale_date": "2025-06-12",
          "sale_price": 4200000,
          "asking_price": 4350000,
          "cap_rate": 6.8,
          "square_feet": 31000,
          "listing_broker": "Example Realty"
        }
      ],
      "next_cursor": null
    }
  • POST

    export_lead_report

    write

    Starts a Lead Report export, the same as Export Lead Report in Lead Activity. It returns an export_id; poll get_export until the status is completed. It reaches no one and only adds a file to your Exports section, which you can delete there, so it runs without asking first.

    POST /api/v1/crexi/export_lead_report

    Input

    Input: export_lead_report
    Parameter Type Description
    from date Start date, at most 12 months ago. Default: 30 days ago.
    to date End date. Default: today.

    Example response

    {
      "export_id": "ex_30911",
      "type": "lead_report",
      "status": "pending",
      "from": "2026-09-01",
      "to": "2026-09-30"
    }
  • POST

    contact_leads

    write

    Sends one message to the leads you pass, from your Crexi account, the same as Contact Leads in Lead Activity. You set the subject and body, links are allowed, and you can copy a colleague. Crexi does not publish a recipient limit. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/crexi/contact_leads

    Input

    Input: contact_leads
    Parameter Type Description
    lead_ids required string[] Lead IDs from list_leads.
    subject required string Email subject.
    body required string Message text, links allowed.
    cc string Email of a colleague to copy.

    Example response

    {
      "status": "sent",
      "recipients": 2,
      "subject": "Tour of 120 Main St on Thursday"
    }
  • POST

    create_listing

    write

    Creates a listing in your account from the property details you pass, and attaches the documents from the URLs. It returns the listing_id and public URL. Fields Crexi requires that you leave out are returned as an error for your agent to fill in. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/crexi/create_listing

    Input

    Input: create_listing
    Parameter Type Description
    type required enum sale or lease.
    name required string Listing name, usually the property name or address.
    address required string Full street address.
    property_type required string Property type, as offered on the listing form.
    asking_price integer Sale price in USD. Leave out for unpriced.
    details object Optional fields such as square_feet, year_built, cap_rate and description.
    documents string[] URLs of the flyer, OM or photos to attach.

    Example response

    {
      "listing_id": "1874523",
      "type": "sale",
      "status": "created",
      "url": "https://www.crexi.com/properties/1874523/texas-oak-plaza-retail-center"
    }
  • POST

    update_listing_status

    write

    Updates the status of one of your listings, the same as the status update in the property dashboard. The status must be one the dashboard offers for that listing. A changed status is visible to everyone on the marketplace. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/crexi/update_listing_status

    Input

    Input: update_listing_status
    Parameter Type Description
    listing_id required string Listing ID from list_my_listings.
    status required string New status, as offered in the property dashboard.

    Example response

    {
      "listing_id": "1874523",
      "status": "Under Contract"
    }

Setup

How do I connect Crexi to Claude Code, Codex or Cursor?

Connecting Crexi takes three steps: request access, sign in to Crexi once, then add one MCP server or call the REST API with the same key.

Connect Crexi over MCP

  1. 1

    Create an account

    Sign up and add Crexi in the console. Your API key is there too.

  2. 2

    Sign in to Crexi once

    Open the connect page from the console and sign in to Crexi the way you always do. We keep the session, never your password, and you can revoke it anytime.

  3. 3

    Add Cotlet to your agent

    Claude Code
    claude mcp add --transport http cotlet \
      https://cotlet.dev/mcp/v1 \
      --header "Authorization: Bearer $COTLET_API_KEY"
    Cursor
    {
      "mcpServers": {
        "cotlet": {
          "url": "https://cotlet.dev/mcp/v1",
          "headers": {
            "Authorization": "Bearer ${COTLET_API_KEY}"
          }
        }
      }
    }
    Codex
    # ~/.codex/config.toml
    [mcp_servers.cotlet]
    url = "https://cotlet.dev/mcp/v1"
    bearer_token_env_var = "COTLET_API_KEY"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

  4. 4

    Ask your agent

    Prompt

    Export the Crexi leads from all my listings for the last 12 months, skip anyone already in my CRM sheet, and add the investors with the listing they engaged with.

    Ask in plain words. Your agent finds the Crexi tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

Call Crexi over REST

  1. 1

    Export your API key

    Shell

    export COTLET_API_KEY="cotlet_..."

    Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

  2. 2

    Call a tool

    curl

    curl https://cotlet.dev/api/v1/crexi/contact_leads \
      -H "Authorization: Bearer $COTLET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"lead_ids":["ld_4102","ld_4107"],"subject":"Tour of 120 Main St on Thursday","body":"Thanks for opening the OM. We are touring the property Thursday at 10 am. Reply to reserve a spot."}'

    Every tool is a POST endpoint at /api/v1/crexi/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

  3. 3

    Read the result

    Example response · contact_leads

    {
      "status": "sent",
      "recipients": 2,
      "subject": "Tour of 120 Main St on Thursday"
    }

    You get plain JSON back, ready for your script. A failed call costs nothing.

Why Cotlet

Why use Cotlet for Crexi? Hosted, safe and kept working.

  • Built for agents

    • One MCP server for every app you connect.
    • The same tools as a REST API for scripts and cron jobs.
    • Works with Claude Code, Codex and Cursor.
  • Your login stays yours

    • You sign in to Crexi yourself. We keep only the session, encrypted with AES-256.
    • The model never sees a login.
    • No stored passwords, no CAPTCHA solving, no MFA bypass.
  • You stay in control

    • Pick read only, or read and write.
    • Anything that reaches other people waits for your OK, unless you switch it off per tool.
    • Revoke access in one click.
  • Kept working for you

    • We test every integration daily.
    • When Crexi changes, the tool pauses until we fix it.
    • Failed calls cost nothing.

Alternatives

Is there a Crexi MCP server on GitHub?

Hosted scrapers on scraping marketplaces read public Crexi listings without signing in. They cannot see your leads, listing stats or comps, and they cannot change anything. Cotlet works inside your own Crexi account.

Cotlet compared with a Hosted scraper
Hosted scraper Cotlet
What it reaches Public listings only Your account: leads, listing stats, exports, saved searches, and comps if your plan includes them
Setup Create an account with the scraper host, configure the actor and its input Request access, sign in to Crexi once, add one MCP server or API key
Write actions None, read only Create listings, change status, message leads, each confirmed by you
When Crexi changes Wait for the scraper author to fix it Our team tests it daily and fixes it for you; failed calls are free
Your Crexi session Not used, so your account data is out of reach Encrypted in an EU vault, limited to the actions you allow, revoked in one click
Where it runs The scraper host's cloud Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule
Price Set by the scraper host, usually per result Free 7-day trial with 5,000 credits, then credits per call

Which one fits you

Pick Cotlet if

  • you are not a developer, or you do not want to maintain a server
  • you need it to keep working when Crexi changes, without checking it yourself
  • your agent or a script should run it on a schedule, also while your computer is off

Pick an open-source server if

  • you are comfortable installing, updating and fixing it yourself
  • you want the session to stay on your own computer
  • you only need it now and then, from one MCP client

For AI agents

Cotlet for Crexi in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • list_my_listings passing
  • get_listing passing
  • get_listing_analytics passing
  • list_leads passing
  • get_lead passing

+ 8 more endpoints

13/13 passing latest check self-healing

crexi.txt

Crexi has no public API (checked 11 Oct 2026). Its only API is a one-way Listing API that pushes listings into Crexi, open to large data partners such as MLSs, brokerages and data providers after a data and legal review and a signed agreement.
Cotlet provides a hosted MCP server and REST API for Crexi: 13 tools (9 read, 4 write).
Access       Request access at https://cotlet.dev/app/signup?app=crexi; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/crexi
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_my_listings, get_listing, get_listing_analytics, list_leads, get_lead, get_export, list_saved_searches, run_saved_search, search_comps, export_lead_report, contact_leads, create_listing, update_listing_status
Confirm      contact_leads, create_listing, update_listing_status (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/crexi-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=crexi (Crexi is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Crexi once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted Crexi server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to Crexi in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following Crexi's terms; Cotlet is not affiliated with Crexi.
Full page as Markdown

Automations

Can Crexi automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a Crexi connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to export crexi leads to your crm or a sheet, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

Where to run Crexi automations through Cotlet, and how to schedule them
Where How to connect How to schedule
Your AI agent Add https://cotlet.dev/mcp/v1 with your API key. A scheduled agent run, for example a Claude Code routine.
n8n MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/crexi/{tool}. Schedule Trigger node.
Make HTTP module: POST https://cotlet.dev/api/v1/crexi/{tool} with an Authorization: Bearer header and a JSON body. Scenario schedule.
Zapier Webhooks by Zapier: POST https://cotlet.dev/api/v1/crexi/{tool} with the same header and body. Schedule by Zapier trigger.
Your own script POST https://cotlet.dev/api/v1/crexi/{tool} with your API key. cron or GitHub Actions.

Pricing & limits

How much does the Crexi API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Crexi API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

Cotlet plan sizes: price, monthly credits and price per credit
Size Price Credits / month Per credit
Solo $29/mo 3,000 about $0.0097
Pro $99/mo 12,000 about $0.0083
Agency $299/mo 40,000 $0.0075

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the Authorization: Bearer header.

About Cotlet

How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own Crexi account.

Company details
The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. Terms
Your session
You sign in to Crexi yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a Crexi tool you allowed. When it expires, your agent gives you a link to sign in again. Security
Revoking access
Disconnect Crexi in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
What we never do
Store passwords, solve CAPTCHAs or bypass MFA.
Crexi's terms
You use your own Crexi account and stay responsible for following Crexi's terms. Cotlet is independent and not affiliated with Crexi. Terms
Contact
Questions about the company, security or an app: contact@cotlet.dev
About Cotlet

Frequently asked questions

How do I get access?

Request access and pick Crexi. Cotlet reviews each request and emails you your API key.

Do I need to be technical?

No. You sign in to Crexi once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

Is a hosted server safe? My Crexi session would leave my computer.

Cotlet keeps your Crexi session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

Do I need Crexi Pro or Intelligence?

Cotlet works in your own Crexi account, so it gets what your plan shows. Crexi's help center says full lead contact info, contacting leads and campaign stats are for Pro members. Comps come from Crexi Intelligence, a separate subscription.

Can I get the Crexi Listing API instead?

Only if you are a large data partner. Crexi says the Listing API is a one-way sync for MLSs, brokerages and data providers, and needs a data and legal review and a signed agreement (checked 11 Oct 2026). Partners ask at integrations@crexi.com.

Can my agent post or send messages in Crexi without asking me?

No. Every call to contact_leads, create_listing or update_listing_status waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. export_lead_report runs without asking, because it sends nothing to anyone and one call undoes it.

Can I use the Crexi API in n8n?

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/crexi/{tool} from the HTTP Request node.

Give your agent access to Crexi.

Request access and pick it. We review each request and email you your API key. Free 7-day trial with 5,000 credits, no card needed.