Skip to main content

Unofficial Python wrapper for Delhi DORIS eSearch Portal

Project description

Python FastAPI License

DORIS API

Unofficial FastAPI wrapper for the Delhi Government eSearch Property Portal.

This API simplifies interaction with the DORIS/eSearch portal by providing clean JSON endpoints for:

  • Property Address Suggestions
  • Captcha Retrieval
  • Property Search
  • Easy Integration with Next.js, React, Node.js and other applications

Features

  • FastAPI Powered
  • Address Autocomplete Suggestions
  • Captcha Session Handling
  • Property Search Records
  • JSON Responses
  • Frontend Friendly
  • Open Source

Disclaimer

This project is not affiliated with, endorsed by, or associated with the Government of NCT of Delhi.

Data is retrieved from publicly accessible services provided by the Delhi eSearch Portal.

This project is intended for educational, research, and integration purposes only.


Base URL

Local Development

http://localhost:8000

Installation

Clone the repository:

git clone https://github.com/raghavsach-dev/DORIS-API.git
cd DORIS-API

Install dependencies:

pip install -r requirements.txt

Run the server:

uvicorn app:app --reload

Open Swagger Docs:

http://localhost:8000/docs

API Endpoints

1. Get Address Suggestions

Returns matching property addresses.

Request

GET /suggest?q=jagri

Response

{
  "success": true,
  "results": [
    "305 JAGRITI ENCLAVE",
    "335 JAGRITI ENCLAVE DELHI JAGRATI ENCLAVE"
  ]
}

2. Create Search Session & Fetch Captcha

Creates a new session and returns a captcha image URL.

Request

GET /captcha

Response

{
  "success": true,
  "session_id": "uuid",
  "image_url": "/captcha-image/uuid"
}

3. Get Captcha Image

Returns the captcha image associated with a session.

Request

GET /captcha-image/{session_id}

Example:

GET /captcha-image/uuid

4. Search Property Records

Searches property records using a selected address and captcha.

Request

POST /search

Body

{
  "session_id": "uuid",
  "address": "335 JAGRITI ENCLAVE DELHI JAGRATI ENCLAVE",
  "captcha": "R4R93N"
}

Response

{
  "success": true,
  "count": 1,
  "records": [
    {
      "reg_no": "102",
      "reg_date": "11-03-2013",
      "first_party": "Dev Raj",
      "second_party": "Veena Nijhawan, Tina Nijhawan",
      "property_address": "House No. 335 Jagriti Enclave Delhi,Jagrati Enclave",
      "deed_type": "SALE,SALE WITHIN MC AREA",
      "property_type": "Residential",
      "sro_name": "SR IVb Vivek Vihar"
    }
  ]
}

Typical Workflow

  1. User starts typing a property address
  2. Call /suggest
  3. User selects an address from suggestions
  4. Call /captcha
  5. Display the captcha image
  6. User enters the captcha
  7. Call /search
  8. Display property records

Next.js Example

Fetch Suggestions

const res = await fetch(
  `${API_URL}/suggest?q=jagri`
);

const data = await res.json();

Fetch Captcha

const captchaRes = await fetch(
  `${API_URL}/captcha`
);

const captchaData = await captchaRes.json();

setSessionId(captchaData.session_id);

const imageUrl =
  `${API_URL}${captchaData.image_url}`;

Render:

<img src={imageUrl} alt="captcha" />

Search Records

const res = await fetch(
  `${API_URL}/search`,
  {
    method: "POST",
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      session_id,
      address,
      captcha
    })
  }
);

const data = await res.json();

Render Results:

{data.records.map((record) => (
  <div key={record.reg_no}>
    <h3>{record.first_party}</h3>
    <p>{record.second_party}</p>
    <p>{record.reg_date}</p>
  </div>
))}

Tech Stack

  • Python
  • FastAPI
  • Requests
  • BeautifulSoup4
  • Uvicorn

Contributing

Contributions, improvements, bug reports, and feature requests are welcome.

Feel free to open an issue or submit a pull request.


License

MIT License


Built to make integration with the Delhi eSearch portal simpler for developers who would rather work with JSON than wrestle with legacy ASP.NET forms and hidden fields. Humanity keeps inventing beautiful APIs and then hiding critical data behind WebForms from 2008. This project attempts to restore balance.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydelhidoris-0.1.1.tar.gz (5.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pydelhidoris-0.1.1-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

File details

Details for the file pydelhidoris-0.1.1.tar.gz.

File metadata

  • Download URL: pydelhidoris-0.1.1.tar.gz
  • Upload date:
  • Size: 5.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for pydelhidoris-0.1.1.tar.gz
Algorithm Hash digest
SHA256 5830237c207d90545b7341c42a467c8ad3ca0837f1db7a1d4c43895fda6fd14d
MD5 bba8e9b42d98d869b51b114f7e2764a3
BLAKE2b-256 3ab70c94c910cb2ba627fbb9da6f16fdc92e871665e496b5932b864895b0f8f7

See more details on using hashes here.

File details

Details for the file pydelhidoris-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: pydelhidoris-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.5

File hashes

Hashes for pydelhidoris-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1805882286c4fd6ecaeab8d0e1a4f5a9be1ba6c14ca101dd1d113630e417a5b0
MD5 d5bb02e974a7c7a15d9ea41d0037947a
BLAKE2b-256 a1d4adebd3c2035d6dfc7add5dc67156340fa6dafe364e943aeff8f93caa3a5e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page