# Crexi API and MCP server

> 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.

Commercial real estate marketplace where brokers list properties for sale, lease or auction, follow leads and listing activity, and research comps with Crexi Intelligence.

## 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.

- **Category:** [Real estate](https://cotlet.dev/integrations/category/real-estate)
- **Endpoints:** 13 (9 read, 4 write)
- **Updated:** 2026-10-11

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.

## 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.

| 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](https://learn.crexi.com/listing-api-overview-crexi-help-center), [Crexi Help Center: Contact your leads](https://learn.crexi.com/contact-your-leads-crexi-help-center), [Crexi Help Center: Property overview dashboard](https://learn.crexi.com/property-overview-dashboard-crexi-help-center), [Crexi Help Center: Exporting data](https://learn.crexi.com/export-experience-updates), [Crexi Help Center: CRM Integrations FAQs](https://learn.crexi.com/crm-integrations-faqs-part-of-crexis-integrations-hub-beta-crexi-help-center)

## For AI agents

```text
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.
```

## 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](https://cotlet.dev/integrations/crexi-api-mcp-server/export-leads-to-crm)** (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." → `export_lead_report`, `get_export`, `list_leads`
- **[Weekly listing activity report for your seller](https://cotlet.dev/integrations/crexi-api-mcp-server/listing-performance-report)** (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." → `list_my_listings`, `get_listing_analytics`, `list_leads`
- **[Email leads who opened your OM](https://cotlet.dev/integrations/crexi-api-mcp-server/email-leads-who-opened-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." → `list_my_listings`, `list_leads`, `get_lead`, `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." → `list_saved_searches`, `run_saved_search`
- **[Pull sales comps for a valuation](https://cotlet.dev/integrations/crexi-api-mcp-server/pull-sales-comps)**: "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." → `search_comps`

## 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 | 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. |

## Tools

**For AI agents:** Every endpoint and its schema is public. The 13 endpoints on this page, with parameters and example responses, can be listed without an account. Calling one returns 403 until the account has an API key with access to Crexi.

### list_my_listings

Your sale, lease and auction listings with status, price and address. Access: read. REST: `POST /api/v1/crexi/list_my_listings`.

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

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.

Example response:

```json
{
  "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
}
```

### get_listing

Full listing: property details, price, description, documents and URL. Access: read. REST: `POST /api/v1/crexi/get_listing`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID from list_my_listings. |

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.

Example response:

```json
{
  "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"
}
```

### get_listing_analytics

Impressions, page views, visitors and document opens from the property dashboard, plus campaign emails, opens and clicks for Pro. Access: read. REST: `POST /api/v1/crexi/get_listing_analytics`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID from list_my_listings. |

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.

Example response:

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

### list_leads

Leads from Lead Activity with contact details, company, industry role, actions taken and latest activity. Pro for full contact info. Access: read. REST: `POST /api/v1/crexi/list_leads`.

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

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.

Example response:

```json
{
  "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
}
```

### get_lead

One lead's activity history on your listings. Access: read. REST: `POST /api/v1/crexi/get_lead`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `lead_id` | string | yes | Lead ID from list_leads. |

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.

Example response:

```json
{
  "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"
    }
  ]
}
```

### get_export

Status of an export (pending, generating, completed or error) and a download link when ready. Access: read. REST: `POST /api/v1/crexi/get_export`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `export_id` | string | yes | Export ID from export_lead_report. |

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.

Example response:

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

### list_saved_searches

The names of your saved marketplace searches. Access: read. REST: `POST /api/v1/crexi/list_saved_searches`.

No parameters.

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

Example response:

```json
{
  "searches": [
    {
      "saved_search": "Dallas retail under $3M"
    }
  ]
}
```

### run_saved_search

Runs one of your saved searches and returns the listings Crexi shows for it. Access: read. REST: `POST /api/v1/crexi/run_saved_search`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `saved_search` | string | yes | Name or ID of a saved search, as saved in Crexi (see list_saved_searches). |
| `limit` | integer | no | Maximum listings to return. |

Runs one saved search, by name or ID as saved in Crexi, and returns the listings Crexi shows for it. It does not change the saved search.

Example response:

```json
{
  "saved_search": "Dallas retail under $3M",
  "listings": [
    {
      "name": "Greenville Ave Retail Strip",
      "address": "5400 Greenville Avenue, Dallas, TX 75206",
      "asking_price": 2650000
    }
  ]
}
```

### search_comps

Sales comps from Crexi Intelligence: sale price, sale date, cap rate, size and brokers. Needs an Intelligence subscription. Access: read. REST: `POST /api/v1/crexi/search_comps`.

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

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.

Example response:

```json
{
  "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
}
```

### export_lead_report

Start a Lead Report export for the last 30 days or a range up to 12 months back. Access: write. REST: `POST /api/v1/crexi/export_lead_report`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `from` | date | no | Start date, at most 12 months ago. Default: 30 days ago. |
| `to` | date | no | End date. Default: today. |

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.

Example response:

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

### contact_leads

Email one lead or a group of leads from Crexi, as you. Pro only. Access: write, asks the user first. REST: `POST /api/v1/crexi/contact_leads`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `lead_ids` | string[] | yes | Lead IDs from list_leads. |
| `subject` | string | yes | Email subject. |
| `body` | string | yes | Message text, links allowed. |
| `cc` | string | no | Email of a colleague to copy. |

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.

Example response:

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

### create_listing

New sale or lease listing on the marketplace, from property details and document URLs. Access: write, asks the user first. REST: `POST /api/v1/crexi/create_listing`.

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

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.

Example response:

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

### update_listing_status

Change a listing's status on the marketplace, for example to under contract or sold. Access: write, asks the user first. REST: `POST /api/v1/crexi/update_listing_status`.

| Parameter | Type | Required | Description |
|---|---|---|---|
| `listing_id` | string | yes | Listing ID from list_my_listings. |
| `status` | string | yes | New status, as offered in the property dashboard. |

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.

Example response:

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

## 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 to your agent.

1. **Create an account** Sign up and add Crexi in the console. Your API key is there too.

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. **Add Cotlet to your agent** Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

   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"
```

4. **Ask your agent** 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.

```
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.
```

### Call Crexi from your scripts.

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

```
export COTLET_API_KEY="cotlet_..."
```

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

```
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."}'
```

3. **Read the result** You get plain JSON back, ready for your script. A failed call costs nothing.

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

## Why use Cotlet for Crexi?

**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.

## 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.

|  | 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

## 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.

| 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. [See full pricing](https://cotlet.dev/pricing)

## 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](https://cotlet.dev/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](https://cotlet.dev/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](https://cotlet.dev/terms)
- **Contact:** Questions about the company, security or an app: [contact@cotlet.dev](mailto:contact@cotlet.dev)

## 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.
