Skip to main content

API

Read the Neeed Directory catalog from your own code or agent: a JSON API described by an OpenAPI document, and an MCP server. No key needed.

Base URL https://neeed.directory/api/v1OpenAPI documentMCP server

Quick start

Every endpoint is a GET that answers JSON and allows cross-origin requests, so a browser, a script or a spreadsheet can call it as is. Only live listings are returned.

curl "https://neeed.directory/api/v1/search?q=email&limit=5"
curl "https://neeed.directory/api/v1/search?category=analytics&page=2"
curl "https://neeed.directory/api/v1/categories"
curl "https://neeed.directory/api/v1/products/{slug}"

Endpoints

GET /searchSearch or list products

Live listings, newest first. Narrow them with a full-text query and by category, label or tag; every filter is optional.

Parameters

NameTypeDescription
qoptionalstringqueryFull-text query over name, tagline and description. 2–100 characters
categoryoptionalstringqueryCategory slug
labeloptionalstringqueryLabel slug
tagoptionalstringqueryTag slug
pageoptionalintegerqueryPage number. default 1, 1–500
limitoptionalintegerqueryProducts per page. default 20, 1–50

Response

NameTypeDescription
productsProduct[]
totalintegerMatches across every page. ≥ 0
pageinteger
limitinteger

Errors: 400 Invalid input, with the rejected parameters under data.issues · 429 Too many requests. Please slow down and try again shortly.

GET /categoriesList categories

Every category with the number of live listings it holds, by name.

Response

NameTypeDescription
categoriesCategory[]

Errors: 429 Too many requests. Please slow down and try again shortly.

GET /products/{slug}Get a product

One live listing by slug. A listing that is not live is a 404.

Parameters

NameTypeDescription
slugstringpathThe slug in the listing's URL. 1–200 characters

Response

A Product.

Errors: 400 Invalid input, with the rejected parameters under data.issues · 404 Not found · 429 Too many requests. Please slow down and try again shortly.

Objects

Product

NameTypeDescription
idstring (uuid)
slugstring
namestring
punchlinestringThe one-line tagline
descriptionstringHTML, as the listing page renders it
urlstring (uri)The listing on Neeed Directory
websitestringThe product's own site
logostring (uri) or null
coverstring (uri) or null
categorystring or nullCategory slug
labelsstring[]Label slugs
tagsstring[]Tag slugs
product_type"software" | "digital_product" or null
pricing_model"free" | "freemium" | "paid" | "open_source" or null
twitterstring or nullX handle, without the @
featuredboolean
listed_atstring (date-time) or nullWhen the listing went live

Category

NameTypeDescription
slugstring
namestring
nounstringWhat the directory calls its listings, e.g. "AI agents"
urlstring (uri)
countintegerLive listings in the category. ≥ 0

Errors and limits

An error is a JSON object with a code and a message; a 400 adds the rejected parameters under data.issues.

{ "code": "NOT_FOUND", "message": "No live listing has this slug." }

Requests are counted per IP: 30 searches and 60 other calls a minute, then a 429 until the minute ends. Responses can be served from the edge for up to five minutes, so a change to a listing takes that long to show.

MCP server

The same three reads as tools for Claude, Cursor and any other Model Context Protocol client, over Streamable HTTP with no session and no key. Each tool takes the parameters of the endpoint it calls and returns the same object.

{
  "mcpServers": {
    "neeed": { "type": "http", "url": "https://neeed.directory/api/mcp" }
  }
}

With Claude Code: claude mcp add --transport http neeed https://neeed.directory/api/mcp

ToolDescription
search_productsSearch the live listings on Neeed Directory, newest first. Every argument is optional: a full-text query over name, tagline and description, and category, label or tag slugs to narrow by. Returns products with their slug, tagline, description, website and pricing model, plus the total match count.
list_categoriesEvery category on Neeed Directory with its slug, name and the number of live listings it holds.
get_productOne live listing on Neeed Directory by slug, with its full description, website, labels, tags and pricing model.

Usage

Calls the API and the MCP server answered over the last 30 days, counted as they are served and refreshed hourly.

0

Calls, last 30 days

0

Over HTTP

0

Over MCP

Most called

Calls per day

The data is the public catalog; when you show a listing elsewhere, link to its page. Use of the API falls under the Terms of Service. Need a write endpoint or a higher limit? Write to us.