Skip to content
Engineering·9 min read

The API-First Classifieds Marketplace

By The Owning Team

Every major classifieds platform — Wallapop, eBay, Craigslist, Facebook Marketplace — was built for one thing: a human looking at a screen, scrolling listings, and clicking "contact seller." That model works fine when the only thing you need to do is find a used sofa. But the web has changed. Systems, tools, and automated workflows increasingly need to search, compare, and act on marketplace data programmatically — and the existing platforms make that nearly impossible.

We built Owning differently. It's a classifieds portal — you can browse, post, buy, and sell through a clean web interface like any other marketplace. But underneath, every listing, every search, and every category is also available as structured data through a documented API. No scraping, no HTML parsing, no fragile selectors that break on every redesign.

The problem: classifieds are HTML-only

If you've ever tried to build a tool that interacts with a classifieds platform — a price tracker, an inventory sync tool, a comparison engine, a listing aggregator — you know the drill. There's no API. So you scrape. You write a script that fetches HTML pages, parses them with BeautifulSoup or Cheerio, and extracts the data you need from divs and spans that were never designed to be machine-readable.

It works. Until it doesn't.

The platform redesigns its listing page. Your selectors break. Your scraper returns garbage. You spend a day fixing it. Two weeks later, they add a cookie wall or a CAPTCHA. You spend another day working around it. Then they change their URL structure. Then they rate-limit your IP. Then they block you entirely.

This is the reality of working with classifieds data in 2026. The platforms treat programmatic access as a threat — something to be blocked, not enabled. And from their perspective, it makes sense: their scrapers are usually competitors or spammers, and their infrastructure wasn't designed to serve structured data.

But it leaves a gap. There's no classifieds platform that says: "Here's our API. Here's our schema. Here's how to integrate. Go build something." Until now.

The solution: one endpoint, three formats

Owning serves every listing in three formats from the same URL. Want JSON for your application? It's there. Want Markdown for a lightweight pipeline? It's there. Want HTML for a human in a browser? That's the default.

JSON — for applications

Every listing endpoint returns clean, typed JSON with a consistent schema. Title, price, condition, category, location, images, attributes, seller info — all structured, all predictable. No parsing HTML, no guessing field names, no dealing with inconsistent data shapes across categories.

Markdown — for pipelines

Append .md to any listing URL (or send Accept: text/markdown) and you get the same listing as a Markdown document. This is useful for ingestion into content systems, LLM pipelines, documentation generators, or any workflow that consumes text. The Markdown is clean, structured, and includes all the key fields — not just the description.

HTML — for humans

The default response is a rendered page for human visitors. Same data, same URL, different representation. The web interface is the primary experience — clean, fast, mobile-friendly. The API isn't a separate product; it's the same product, served differently.

Interactive API documentation

An API without documentation is a black box. Owning ships with an interactive OpenAPI specification — you can browse every endpoint, see the expected parameters, read the response schema, and test calls directly in your browser. No Postman setup, no guessing.

The spec covers listing search, category browsing, asset type templates, schema discovery, and authentication. Public read endpoints (search, browse, listing detail) require no authentication — you can start integrating immediately. Write operations (creating, updating, or deleting listings) require an API key, which you can generate from your account.

Agent discovery via /.well-known/ai.json

How does a system discover that a website has an API? Traditionally, you'd have to know the URL, read the docs, and hardcode the endpoints. Owning follows a simpler pattern: it publishes a machine-readable discovery file at /.well-known/ai.json.

This file describes the API — its base URL, available endpoints, authentication method, and response formats. A system that encounters Owning can fetch this file and immediately understand how to interact with it. No reverse-engineering, no documentation reading, no hardcoded assumptions.

The discovery file is linked from the site's robots.txt and from a <link rel="ai-discovery"> tag in the HTML head, making it discoverable through standard web conventions.

What you can build with it

Programmatic search and evaluation

A system can search for listings by keyword, category, price range, condition, and location — all through a single API call. Results come back as structured JSON with all the fields needed to evaluate a listing without visiting the page. Filter by boat brand, year, length, or price. Compare multiple listings side by side in code, not in browser tabs.

Inventory synchronization

A reseller with inventory on multiple platforms can use the API to keep listings in sync. Create a listing on Owning, and a scheduled job can mirror it to other channels. When a listing sells on one platform, mark it sold on all of them. No manual cross-posting, no stale listings, no angry buyers showing up for items that are gone.

Price comparison and aggregation

A price comparison engine can pull listings from Owning's API and aggregate them alongside data from other sources. Because the data is structured and consistent, aggregation is trivial — no HTML parsing, no data normalization headaches. Build a "best deals" feed, a price tracker, or a market analytics dashboard on top of clean data.

Automated listing creation

A seller with a large inventory — a boat dealer, a used car lot, an electronics reseller — can push listings to Owning programmatically. Generate listings from a product database, update prices in bulk, rotate photos, and manage the full lifecycle through the API. No manual posting through a web form, no CSV uploads, no browser automation.

A real catalog, not a demo

The API is only useful if there's real data behind it. Owning currently has 700+ boat listings — motorboats, sailing yachts, catamarans, and RIBs from brands like Bavaria, Sunseeker, Jeanneau, Beneteau, and Azimut. Each listing has structured attributes — brand, model, year, length, engine hours, location, price — served as JSON and Markdown alongside the HTML view.

The boats vertical is the first category with deep catalog coverage, but the platform is category-agnostic. The same API, the same schema, the same structured data approach applies to electronics, vehicles, furniture, and any other category. Asset type templates define the relevant attributes per category, so a boat listing has length and engine hours while a laptop listing has RAM and processor — all through the same consistent API.

The technology behind it

Owning is built on a modern, API-first stack:

  • Next.js — the web frontend, with server-side rendering for SEO and static generation for performance.
  • Hono — the API layer, a fast, lightweight web framework that serves JSON, Markdown, and HTML from the same routes.
  • Drizzle ORM + PostgreSQL — the data layer, with type-safe queries and a relational schema that maps cleanly to the API responses.
  • Railway — deployment and hosting, with auto-deploy from GitHub and managed PostgreSQL.
  • sharp — on-the-fly image processing, serving optimized WebP at the right resolution for every device.

The architecture is intentionally simple. There's no microservice sprawl, no message queue, no separate API gateway. The API and the web app share a database and a schema. The web app calls the same API endpoints that external integrators use. This means the API is never a second-class citizen — it's the same code path that powers the website.

Why this matters

The classifieds market is one of the oldest categories on the internet, and it's been stagnant for years. The dominant platforms won on network effects and local density, not on technology. Their APIs are closed, their data is locked behind HTML, and their integrations are limited to paid enterprise partnerships.

Owning takes a different bet: that an open, structured, API-first marketplace can compete by being easier to build on. Not by replacing Wallapop's user base overnight, but by becoming the default data source for tools, systems, and workflows that need classifieds data. Every price tracker, every inventory tool, every comparison engine that currently scrapes HTML is a potential API consumer. Every reseller who cross-posts manually is a potential API user.

The web interface is for humans. The API is for everything else. Same data, same platform, same listings — just served in the format you need.

Explore the API

Read the interactive API documentation to browse endpoints and test calls in your browser. Or browse the catalog to see what's listed — every page you see is also available as JSON or Markdown.

Related reading

The API-First Classifieds Marketplace | Owning.pro