Skip to main content

REST API v2 · MCP 2026-07-28

AbuDhaBuy Data Platform documentation

One normalized interface for ADREC market aggregates, Tawtheeq yields, official project and developer registries, and decision-ready community signals.

Quick start

Generate a free test key in the developer dashboard, then call a derived-data endpoint. Test and live responses use the same schema.

cURL
curl "https://abudhabuy.com/api/v1/intelligence/community/al-reem-island" \
  -H "Authorization: Bearer dub_test_..."
JavaScript
const response = await fetch(
  "https://abudhabuy.com/api/v1/intelligence/community/al-reem-island",
  { headers: { Authorization: "Bearer " + process.env.DUBUY_API_KEY } }
);
if (!response.ok) throw new Error(await response.text());
const intelligence = await response.json();
Python
import os, requests

response = requests.get(
    "https://abudhabuy.com/api/v1/intelligence/community/al-reem-island",
    headers={"Authorization": f"Bearer {os.environ['DUBUY_API_KEY']}"},
    timeout=20,
)
response.raise_for_status()
intelligence = response.json()

Authentication

Use a Bearer header. X-API-Key is also accepted for systems that cannot set Bearer auth.

Header
Authorization: Bearer dub_test_...
  • Keys are displayed once and stored as SHA-256 verifiers.
  • Do not expose a key in client-side JavaScript or source control.
  • Use dashboard rotation after suspected compromise; the old key is revoked immediately.

Test and live environments

PrefixPurposeAvailability
dub_test_Development and evaluation; production-compatible schemas.Every account, 500 units/month.
dub_live_Customer-facing and production workloads.Paid data plans and legacy Agent / Team.

Endpoint catalog

Base URL: https://abudhabuy.com/api/v1. Metadata and freshness are public; other routes require a key.

RouteDatasetUnitsReturns
GET /metametadata0API metadata and plan-neutral capability discovery.
GET /data-freshnessmetadata0Dataset provenance, cadence, and last-success timestamps.
GET /market/statsmarket_aggregates1Citywide ADREC market aggregates.
GET /communitiescommunity_intelligence1Community discovery and headline metrics.
GET /communities/{slug}community_intelligence2Normalized community profile.
GET /communities/{slug}/propertiescommunity_intelligence2Official and transaction-backed property catalogue with provenance.
GET /communities/{slug}/pulsecommunity_intelligence2Community discussion and market-temperature summary.
GET /communities/{slug}/trendscommunity_intelligence2Community price history.
GET /communities/{slug}/as-ofcommunity_intelligence5Historical AbuDhaBuy aggregate snapshot at or before a requested date.
GET /searchcommunity_intelligence1Community screening.
GET /comparecommunity_intelligence4Community comparison.
GET /projectsproject_registry2Project search and performance.
GET /projects/{id}project_registry2Official project detail and matched history.
GET /developersdeveloper_registry2Developer registry search.
GET /developers/{name}developer_registry2Developer profile and registry evidence.
GET /rental-yieldsrental_intelligence2Tawtheeq-derived rental yields.
GET /intelligence/community/{slug}community_intelligence5Decision-ready community signal bundle.
GET /intelligence/investment-screencommunity_intelligence5Multi-factor community investment screen.

Query parameters and response schemas are defined in the OpenAPI document. Collection pagination uses an integer cursor; pass the returned next_cursor to continue.

Errors, limits, and request IDs

Error envelope
{
  "error": {
    "code": "monthly_quota_exceeded",
    "message": "Monthly quota of 10,000 units has been exceeded.",
    "request_id": "9bb03a8b-..."
  },
  "documentation_url": "https://abudhabuy.com/developers/api/"
}

Response headers

X-Request-Id, X-AbuDhaBuy-Units, X-AbuDhaBuy-Units-Used, X-AbuDhaBuy-Units-Remaining, and X-RateLimit-Limit.

Retry policy

Retry 429 and 503 with exponential backoff and jitter. Do not retry 400, 401, 403, 402, or 451 until the cause changes.

Units

Authenticated calls consume the endpoint’s published units, including valid queries that return no matches.

Versioning

Additive fields can ship in v1; breaking meaning or removal requires a version or deprecation window.

Hosted MCP and local stdio

The hosted endpoint is stateless and supports the current self-contained HTTP protocol plus a bounded legacy mode. Pass the same AbuDhaBuy key your REST client uses.

Hosted server descriptor
{
  "url": "https://abudhabuy.com/api/mcp/",
  "headers": {
    "Authorization": "Bearer dub_test_..."
  }
}
Claude Desktop / Cursor stdio
{
  "mcpServers": {
    "dubuy": {
      "command": "npx",
      "args": ["-y", "dubuy-mcp-server"],
      "env": { "DUBUY_API_KEY": "dub_test_..." }
    }
  }
}

Discovery: /.well-known/mcp.json. Both MCP transports expose the same safe-only tool set as the REST catalog.

Data governance

Every result distinguishes official source facts, AbuDhaBuy normalization, and model-derived signals. The API and MCP expose only source-labelled official facts, aggregates, and AbuDhaBuy-created derived metrics. Row-level transactions, listing-provider-derived intelligence, raw listings, and contact details are excluded on every plan.