Live

Bayut logo

Bayut API and MCP server

bayut.com

Bayut has no public developer API and publishes no API docs (checked 12 Oct 2026). Cotlet is a hosted MCP server and REST API for Bayut with 13 endpoints (10 read, 3 write): your AI agent signs in as you and does the work.

Category
Real estate
Endpoints
13 10 read, 3 write
Updated
How Cotlet connects your agent to Bayut
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 13 endpoints

    cotlet.dev/mcp/v1

  3. Bayut logo

    Bayut

    Signed in as you on bayut.com

You sign in once. We never store your password.

Official API

Does Bayut have an official API?

Bayut has no public developer API and publishes no API docs (checked 12 Oct 2026). A Leads API that pushes leads into an agency CRM is available on request from support@bayut.com; listing insights, quality scores, floor plans, badges and credits stay in Profolio, on the web and in the app.

What Bayut's own tools do compared with Cotlet
Task Bayut official Cotlet
List leads by channel Partly Leads API into your CRM, on request Yes
Read lead details and call recordings No Yes
Listing impressions, clicks and leads No Yes
Find low performing listings No Yes
Assign a floor plan to a listing No Brokerpad users must use Profolio for this Yes
Track expired TruCheck badges No Yes
Apply a Signature, Hot or Property of the Week boost No Yes
Market and transaction insights No Yes

Sources: Profolio for agents (Bayut Agent Portal) · The Best Of Profolio: top features (Bayut) · Floor plans are now mandatory for a perfect quality score (Bayut) · Upload up to 5 photos to activate TruCheck (Bayut) · What is the Leads API? (Bayut Help) · Can I request the Leads API as a Profolio user? (Bayut Help)

Common use cases

What can an AI agent do in Bayut?

Cotlet is best for Bayut agents and agencies who want their AI agent to read leads and listing performance assign floor plans, apply boosts and plan TruCheck re-visits without running or fixing a server.

  • Daily lead digest by channel Runs: Daily

    Every morning at 8, list my Bayut leads from the last 24 hours. Put calls and WhatsApp messages first, group them by listing, flag missed calls nobody returned, and keep phone views and WhatsApp views in a separate short list. Your agent calls list_leads, get_lead and export_leads.

  • Find low performing listings and decide what to boost Runs: Weekly

    Every Monday, find my Bayut listings that Profolio marks as low performing, show impressions, clicks, leads and quality score for each, say what is missing, and propose which ones are worth a Hot or Signature boost with the credits I have. Your agent calls get_listing_insights, list_listings, get_credits and apply_boost.

  • Assign floor plans to listings Runs: Weekly

    List my Bayut listings that still have a floor plan waiting, orange quality scores first. I will send you the floor plan ID for each one; assign them after I confirm and tell me which listings are still waiting. Your agent calls list_listings, get_listing and assign_floor_plan.

  • Track expired TruCheck badges and plan re-visits Runs: Weekly

    Every Sunday, list my Bayut listings that lost their TruCheck badge since last week, rank them by leads and impressions, and give me a visit list grouped by building for the week. Your agent calls list_listings and get_listing_insights.

  • Weekly Dubai market report Runs: Weekly

    Every Monday, send me the most searched Dubai communities, average rent and sale prices, and the areas with the highest ROI. Your agent calls get_market_insights and get_transactions.

Endpoints

What is the Bayut API?

Cotlet's Bayut API exposes 13 endpoints for your own Bayut account: list listings, get listing, get listing insights, list leads, get lead, export leads, get traffic report, get Bayut Credits, get market insights, get transactions, assign floor plan, request TruCheck and apply boost. The list_listings endpoint returns your listings from Manage Listings with status, quality score and badges, for Bayut or dubizzle. Each endpoint takes simple JSON inputs like listing_id, cursor or limit 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_listings

    read

    Lists your listings as Manage Listings shows them, for Bayut or for dubizzle. Each item carries the quality score colour, the Checked and TruCheck badges and whether a floor plan is waiting to be assigned. Pages hold up to 100 listings; pass next_cursor back as cursor for the next page.

    POST /api/v1/bayut/list_listings

    Input

    Input: list_listings
    Parameter Type Description
    platform enum bayut or dubizzle. Default: bayut.
    limit integer 1 to 100. Default: 25.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "listings": [
        {
          "listing_id": "DM-2214",
          "platform": "bayut",
          "title": "2BR in Dubai Marina, marina view",
          "quality_score": "orange",
          "badges": [
            "checked"
          ],
          "floor_plan_waiting": true
        },
        {
          "listing_id": "DM-2290",
          "platform": "bayut",
          "title": "Studio in JLT, furnished",
          "quality_score": "green",
          "badges": [
            "checked"
          ],
          "floor_plan_waiting": false
        }
      ],
      "next_cursor": null
    }
  • POST

    get_listing

    read

    Returns one listing with its price, purpose, photos, assigned floor plan, quality score and the badges it has today. Use it to check whether a TruCheck request went through. Read only.

    POST /api/v1/bayut/get_listing

    Input

    Input: get_listing
    Parameter Type Description
    listing_id required string Listing ID or your reference number, from list_listings.

    Example response

    {
      "listing_id": "DM-2290",
      "platform": "bayut",
      "title": "Studio in JLT, furnished",
      "purpose": "rent",
      "price_aed": 62000,
      "photos": 14,
      "floor_plan": "assigned",
      "quality_score": "green",
      "badges": [
        "checked"
      ]
    }
  • POST

    get_listing_insights

    read

    Returns impressions, clicks and leads for each listing, as Listing Insights shows them for Bayut. Low performing means a lower click-through rate than similar listings on Bayut. Filters combine, and the listing ID filter accepts your reference number.

    POST /api/v1/bayut/get_listing_insights

    Input

    Input: get_listing_insights
    Parameter Type Description
    low_performing_only boolean Only listings with a lower click-through rate than similar listings.
    location string Community or building name.
    status string Listing status as shown in Profolio.
    purpose enum sale or rent. Default: both.
    category string Property category as shown in Profolio.
    reference string Your reference number or listing ID.
    user string Only listings of this user.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "listings": [
        {
          "listing_id": "DM-2214",
          "location": "Dubai Marina",
          "purpose": "sale",
          "impressions": 1840,
          "clicks": 21,
          "leads": 1,
          "low_performing": true
        },
        {
          "listing_id": "DM-2290",
          "location": "JLT",
          "purpose": "rent",
          "impressions": 960,
          "clicks": 40,
          "leads": 3,
          "low_performing": false
        }
      ],
      "next_cursor": null
    }
  • POST

    list_leads

    read

    Lists leads from all five channels Profolio reports: email, sms, phone, whatsapp and chat. Each lead names the listing of interest and the time it arrived. Pass lead_id to get_lead for the contact details. Pages hold up to 100 leads.

    POST /api/v1/bayut/list_leads

    Input

    Input: list_leads
    Parameter Type Description
    channel enum email, sms, phone, whatsapp or chat. Default: all.
    since datetime Only leads received after this time.
    listing_id string Only leads for this listing.
    limit integer 1 to 100. Default: 50.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "leads": [
        {
          "lead_id": "ld_40a1",
          "channel": "whatsapp",
          "listing_id": "DM-2214",
          "received_at": "2026-10-10T14:22:00Z"
        },
        {
          "lead_id": "ld_40a7",
          "channel": "whatsapp",
          "listing_id": "DM-2290",
          "received_at": "2026-10-10T18:05:00Z"
        }
      ],
      "next_cursor": null
    }
  • POST

    get_lead

    read

    Returns one lead. What it holds depends on the channel: the email address for email leads, the enquiry text for SMS leads, the phone number and the call recording for phone leads, and the message. Read only.

    POST /api/v1/bayut/get_lead

    Input

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

    Example response

    {
      "lead_id": "ld_40a1",
      "channel": "whatsapp",
      "listing_id": "DM-2214",
      "name": "Sample Buyer",
      "phone": "+971500000000",
      "message": "Is the unit still available for viewing this week?",
      "received_at": "2026-10-10T14:22:00Z"
    }
  • POST

    export_leads

    read

    Runs the export option at the top right of Reports, Leads and returns the Excel file as a download link. Pass a channel to export one channel only. Read only: nothing in Profolio changes.

    POST /api/v1/bayut/export_leads

    Input

    Input: export_leads
    Parameter Type Description
    channel enum email, sms, phone, whatsapp or chat. Default: all.

    Example response

    {
      "channel": "whatsapp",
      "file": "bayut-leads.xlsx",
      "download_url": "https://files.cotlet.example/exports/bayut-leads.xlsx",
      "rows": 2
    }
  • POST

    get_traffic_report

    read

    Returns the Traffic report from Reports: the top locations by impressions and the overall performance of your listings, for Bayut and dubizzle. Read only.

    POST /api/v1/bayut/get_traffic_report

    Input

    No parameters.

    Example response

    {
      "top_locations": [
        {
          "location": "Dubai Marina",
          "impressions": 5210
        },
        {
          "location": "JLT",
          "impressions": 3180
        }
      ],
      "overall": {
        "impressions": 8390,
        "clicks": 144,
        "leads": 11
      }
    }
  • POST

    get_credits

    read

    Returns the Bayut Credits balance shown in Manage Listings. Read only.

    POST /api/v1/bayut/get_credits

    Input

    No parameters.

    Example response

    {
      "bayut_credits": 120
    }
  • POST

    get_market_insights

    read

    Returns Market Insights for Dubai or Abu Dhabi: the most searched communities, sub-communities and buildings, the average rent and sale prices, and the areas with the highest ROI. Read only.

    POST /api/v1/bayut/get_market_insights

    Input

    Input: get_market_insights
    Parameter Type Description
    city required enum dubai or abu_dhabi.

    Example response

    {
      "city": "dubai",
      "most_searched": [
        {
          "community": "Dubai Marina",
          "type": "community"
        },
        {
          "community": "Business Bay",
          "type": "community"
        }
      ],
      "average_prices_aed": {
        "rent": 118000,
        "sale": 1950000
      },
      "highest_roi": [
        {
          "community": "Jumeirah Village Circle",
          "roi_percent": 7.4
        }
      ]
    }
  • POST

    get_transactions

    read

    Returns last sold transaction data from the Dubai Land Department, as BayutPro shows it in Transactions. Only agencies registered in Dubai have this section. Filter by location, transaction type, time period, property type and bedrooms. Read only.

    POST /api/v1/bayut/get_transactions

    Input

    Input: get_transactions
    Parameter Type Description
    location string Community or building name.
    transaction_type string As the Transactions filter offers it.
    period string Time period as the Transactions filter offers it.
    property_type string e.g. apartment, villa.
    bedrooms integer Number of bedrooms.
    cursor string Next page cursor from the previous call.

    Example response

    {
      "transactions": [
        {
          "location": "Dubai Marina",
          "property_type": "apartment",
          "bedrooms": 2,
          "price_aed": 2150000,
          "date": "2026-09-28"
        }
      ],
      "next_cursor": null
    }
  • POST

    assign_floor_plan

    write

    Assigns a floor plan from the uploads section to one listing, the same step as clicking the floor plan icon in Profolio. The icon turns green once the plan is linked, and Bayut requires a floor plan for a perfect quality score. The floor plan becomes visible on the live listing. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/bayut/assign_floor_plan

    Input

    Input: assign_floor_plan
    Parameter Type Description
    listing_id required string Listing ID or your reference number, from list_listings.
    floor_plan_id required string Floor plan from the uploads section of Profolio.

    Example response

    {
      "listing_id": "DM-2214",
      "floor_plan_id": "fp_3302",
      "status": "assigned"
    }
  • POST

    request_trucheck

    write

    Uploads up to 5 photos of a Checked property and submits them to request TruCheck validation, as the multiple photo upload in BayutPro does. Bayut recommends clear photos that show the unit number and an inside view. Bayut's moderation team reviews the submission, so the call returns "submitted"; check the badge later with get_listing. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/bayut/request_trucheck

    Input

    Input: request_trucheck
    Parameter Type Description
    listing_id required string Listing ID or your reference number, from list_listings.
    photo_urls required string[] Up to 5 photo URLs.

    Example response

    {
      "listing_id": "DM-2290",
      "photos": 2,
      "status": "submitted"
    }
  • POST

    apply_boost

    write

    Applies one boost product to one listing, as the boost products in Profolio do. Bayut offers Signature, Hot and Property of the Week; dubizzle offers Refresh and Featured. Check get_credits first. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/bayut/apply_boost

    Input

    Input: apply_boost
    Parameter Type Description
    listing_id required string Listing ID or your reference number, from list_listings.
    product required enum signature, hot or property_of_the_week on Bayut; refresh or featured on dubizzle.

    Example response

    {
      "listing_id": "DM-2214",
      "platform": "bayut",
      "product": "hot",
      "status": "applied"
    }

Setup

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

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

Connect Bayut over MCP

  1. 1

    Create an account

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

  2. 2

    Sign in to Bayut once

    Open the connect page from the console and sign in to Bayut 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

    Every morning at 8, list my Bayut leads from the last 24 hours. Put calls and WhatsApp messages first, group them by listing, flag missed calls nobody returned, and keep phone views and WhatsApp views in a separate short list.

    Ask in plain words. Your agent finds the Bayut 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 Bayut 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/bayut/assign_floor_plan \
      -H "Authorization: Bearer $COTLET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"listing_id":"DM-2214","floor_plan_id":"fp_3302"}'

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

  3. 3

    Read the result

    Example response · assign_floor_plan

    {
      "listing_id": "DM-2214",
      "floor_plan_id": "fp_3302",
      "status": "assigned"
    }

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

Why Cotlet

Why use Cotlet for Bayut? 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 Bayut 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 Bayut changes, the tool pauses until we fix it.
    • Failed calls cost nothing.

Alternatives

Is there a Bayut MCP server on GitHub?

Hosted scrapers read Bayut's public search pages and agent directories. They do not sign in to your account, so they cannot read your leads or change your listings. No MCP server for Bayut agents exists.

Cotlet compared with a Hosted scraper
Hosted scraper Cotlet
What it reads Public listings, agents and agencies Your own listings, leads, insights and credits in Profolio
Setup Scraper account and token, no Bayut login Request access, sign in to Profolio once in your browser
Write actions None Assign floor plans and apply boosts, each confirmed by you
When Bayut changes Wait for the scraper's maintainer Our team tests it daily and fixes it for you; failed calls are free
Your Bayut session Not used Encrypted in an EU vault, limited to the actions you allow, revoked in one click
Where it runs The scraper's cloud, results as a dataset Hosted: Claude Code, Codex, Cursor, n8n and scripts, also on a schedule
Price Set by the scraper, 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 Bayut 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 Bayut in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • list_listings passing
  • get_listing passing
  • get_listing_insights passing
  • list_leads passing
  • get_lead passing

+ 8 more endpoints

13/13 passing latest check self-healing

bayut.txt

Bayut has no public developer API and publishes no API docs (checked 12 Oct 2026). A Leads API that pushes leads into an agency CRM is available on request from support@bayut.com; listing insights, quality scores, floor plans, badges and credits stay in Profolio, on the web and in the app.
Cotlet provides a hosted MCP server and REST API for Bayut: 13 tools (10 read, 3 write).
Access       Request access at https://cotlet.dev/app/signup?app=bayut; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/bayut
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_listings, get_listing, get_listing_insights, list_leads, get_lead, export_leads, get_traffic_report, get_credits, get_market_insights, get_transactions, assign_floor_plan, request_trucheck, apply_boost
Confirm      assign_floor_plan, request_trucheck, apply_boost (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/bayut-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=bayut (Bayut is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to Bayut 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 Bayut 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 Bayut 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 Bayut's terms; Cotlet is not affiliated with Bayut.
Full page as Markdown

Automations

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

Yes. Cotlet does not replace your automation platform: it gives it a Bayut 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 daily lead digest by channel, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

Where to run Bayut 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/bayut/{tool}. Schedule Trigger node.
Make HTTP module: POST https://cotlet.dev/api/v1/bayut/{tool} with an Authorization: Bearer header and a JSON body. Scenario schedule.
Zapier Webhooks by Zapier: POST https://cotlet.dev/api/v1/bayut/{tool} with the same header and body. Schedule by Zapier trigger.
Your own script POST https://cotlet.dev/api/v1/bayut/{tool} with your API key. cron or GitHub Actions.

Pricing & limits

How much does the Bayut API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the Bayut 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 Bayut 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 Bayut 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 Bayut tool you allowed. When it expires, your agent gives you a link to sign in again. Security
Revoking access
Disconnect Bayut 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.
Bayut's terms
You use your own Bayut account and stay responsible for following Bayut's terms. Cotlet is independent and not affiliated with Bayut. 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 Bayut. Cotlet reviews each request and emails you your API key.

Do I need to be technical?

No. You sign in to Bayut 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 Bayut session would leave my computer.

Cotlet keeps your Bayut 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 a Profolio account?

Yes. Cotlet works in your own Profolio account, which Bayut gives to registered agents. The Transactions tools need an agency registered in Dubai, because Bayut shows that section only to those agencies.

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

No. Every call to assign_floor_plan, request_trucheck or apply_boost waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals.

Can I use the Bayut 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/bayut/{tool} from the HTTP Request node.

Give your agent access to Bayut.

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.