rets-python
rets-python
What it is and what it does
rets-python is a client library that connects to Real Estate Transaction Standard (RETS) servers to retrieve property listings, metadata, and media. It abstracts the low-level RETS HTTP protocol into a higher-level API where you instantiate a client with server credentials, then navigate resources (like Property), classes (like A), and object types (like HiRes photos) to search listings and fetch associated data. The library automatically decodes RETS responses into Python native types—dates become datetime objects, numbers become integers—and handles bulk photo retrieval by resource key.
The package depends on requests, requests-toolbelt, udatetime, and lxml to handle HTTP communication, multipart responses, fast datetime parsing, and XML parsing. It targets real estate professionals, MLS integrators, and property data platforms that need programmatic access to RETS-compliant servers. The library is stable and has been in use since 2017, but development has stalled; it is best suited for integrations with established RETS infrastructure rather than new feature development.
Use it for:
- Retrieve recent property listings from an MLS RETS server and filter by date or price range for downstream analysis.
- Bulk-download high-resolution photos for property listings using resource keys and store them locally.
- Query RETS metadata to discover available resources, classes, and object types supported by a specific MLS server.
- Build a real estate data aggregation tool that pulls listings from multiple RETS servers and normalizes them into a common schema.
- Automate property listing imports into a CRM or property management system by polling a RETS server on a schedule.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Python 3 client library for querying and retrieving real estate data from RETS (Real Estate Transaction Standard) Version 1.7.2 servers, including property listings, metadata, and associated media.
Yes, if you are integrating with an established RETS server and need a stable, low-friction Python client. The library is permissively licensed, has no known vulnerabilities, and handles the RETS protocol and data decoding well. However, maintenance is dormant—last release was 668 days ago—so do not expect bug fixes, security patches, or support for new RETS features. Use only for stable, production integrations with known RETS endpoints, not for new development or experimental work.
Install
rets-python on PyPI
pip
pip install rets-pythonuv
uv add rets-pythonpoetry
poetry add rets-pythonInstalling rets-python
Before you install
Low install friction with four standard dependencies. Maintenance is dormant—last release was 668 days ago and the repository shows no recent commits, though it remains unarchived. Suitable for stable integrations but not for active development or new feature requests.
License in practice
MIT License (permissive) allows use, modification, and distribution with minimal restrictions, making it safe for commercial and private projects.
Quickstart
pip install rets-python
from rets.client import RetsClient
client = RetsClient(
login_url='http://my.rets.server/rets/login',
username='username',
password='password'
)
resource = client.get_resource('Property')
resource_class = resource.get_class('A')
search_result = resource_class.search(query='(LIST_87=2017-01-01+)', limit=10)
Requires a working RETS server endpoint with valid credentials; no public test server is documented in the fact sheet.
Verify before relying
- Whether the package works with RETS servers beyond Version 1.7.2 or if it is strictly limited to that version.
- Current compatibility with Python versions beyond 3.6 (classifiers list 3.5 and 3.6 explicitly).
- Whether dormant maintenance status means critical bugs or security issues would be addressed.
Package facts
| License | MIT License (permissive) |
| Python support | not specified |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 4 — requests, requests-toolbelt, udatetime, lxml |
| Maintenance | dormant — 668 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 104,154/month — #12,765 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: rets_python-0.4.12-py3-none-any.whl
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
metal-sdkPython client library for indexing and querying…
permissive · top 15,000 on PyPI
numpy-financialProvides elementary financial functions (IRR,…
permissive · top 5,000 on PyPI
dbs3-pycurlProvides a Python client wrapper around pycurl…
permissive · top 15,000 on PyPI
rangehttpserverA drop-in replacement for Python's…
permissive · top 5,000 on PyPI
wapi-pythonA Python client library for accessing Volue…
unclear · top 15,000 on PyPI
osfclientosfclient is a Python library and command-line…
permissive · top 15,000 on PyPI
DataPropertyExtracts and classifies properties from…
permissive · top 5,000 on PyPI
needle-pythonPython client library for the Needle API,…
permissive · top 15,000 on PyPI
taxjarPython client library for the TaxJar Sales Tax…
permissive · top 15,000 on PyPI
backports.cached-propertyProvides the cached_property decorator for…
permissive · top 15,000 on PyPI