Skip to content
theqiyas.cc
Problem Solver
cc · project · Products

Estate Listing Pusher

One API and panel that posts real estate listings to bina.az, tap.az, yeniemlak.az, vipemlak.az and arenda.az. Write the listing once, publish it everywhere.

FastAPI PostgreSQL Python SQLAlchemy httpx

Realtors in Azerbaijan post the same apartment on five different sites, one form at a time, and then do it again when the price changes. Estate Listing Pusher does that from one place. You write the listing once, and it goes to bina.az, tap.az, yeniemlak.az, vipemlak.az and arenda.az.

None of these sites offers a public API for listings. ELP talks to each of them the way their own website does: GraphQL on bina.az and tap.az, ordinary HTML forms on the others. Every site is a separate module, so adding one more does not touch the rest of the code.

What it handles:

  • Accounts. Connect your account on a site with your email and password, or with a session cookie copied from the browser. The password is used once to log in and is never saved. Cookies are stored encrypted and the API never shows them again.
  • Listings. Publish, edit, prolong and delete, and read the moderation status back from the site: pending, published, rejected, expired or waiting for payment.
  • Photos. Upload up to 30 at once, from files or from links, and rotate them before they go out.
  • Import. Listings that already exist on an account can be pulled into the panel and managed from there.
  • Paid services. Bumps, VIP and premium on bina.az, with a confirmation step before any money is spent.
  • Preview. Check a listing and see exactly what would be sent to bina.az, without sending it.

There is a web panel with a map for picking the address, and a full REST API for agencies that want to connect their own systems. The API has long lived keys for integrations, an admin side for users and keys, rate limits on logins, and documentation at elp.ubermensch.cc/docs.

Built with Python, FastAPI, httpx and SQLAlchemy, on SQLite or PostgreSQL, and covered by tests. The source code is private.