Triremes API
Search the problems and the websites with poor SEO / AEO, and buy leads, idea reports and websites from your own code. The API shows what their pages show, plus each one's price and whether you own it; what you buy comes back in the answer, exactly as its page shows it.
Access and prices
- $250 a month for API access, billed by card through Stripe until you cancel. Subscribe on your account's API page, where you also make your keys.
- Purchases are paid from prepaid credits, bought on the same page in packs of $100, $250 and $500. A purchase costs what it
costs on the site: a lead $19 for each business found, at least $19; an idea report its tier's price;
a website with poor SEO / AEO $99. Each problem's price (
price_cents) and itsbusinessesare in the API's answers. Credits never expire and are not refunded in cash. - At most 60 requests a minute per key, and at most $500 of purchases per account in a day (UTC).
- From one address, at most 120 requests a minute with or without a key, and 10 a minute with a key that is not valid; past either, that address waits out the minute.
Keys
Send your key with every request, in the Authorization header. A key is shown once, when you make it; keep it secret, and
revoke it on your account's API page if it leaks. Keys work only while your subscription is active.
Authorization: Bearer trm_live_...
Endpoints
All under https://triremes.com/api/v1, all JSON. The full description is openapi.json (OpenAPI 3.1).
Search problems
GET /problems, 25 at a time (limit, up to 100). Filters: q (words in the title or the
summary), tier (A, B or C), has_businesses (true: leads;
false: idea reports), since (first seen on or after a date). The next page is cursor= the answer's
next_cursor, null on the last page.
curl -s "https://triremes.com/api/v1/problems?tier=A&has_businesses=true&limit=10" \
-H "Authorization: Bearer $TRIREMES_KEY"
Each problem has its slug, name, tier, kind (what it sells: lead or
idea), businesses, reports, summary, price_cents and
already_owned.
One problem
GET /problems/{slug}: as its page shows it, with a lead's reports and related problems.
curl -s "https://triremes.com/api/v1/problems/inventory-sync-drops-orders-0a1b2c3d4e" \
-H "Authorization: Bearer $TRIREMES_KEY"
Websites with poor SEO / AEO
GET /website-gaps: the websites on sale, 25 at a time (limit, up to 50), each as its page shows it
before it is bought: its id, title, category (what the business does), region,
city, country, its gaps by name, measured_at, price_cents and
already_owned; never which business it is. Filters: category (a business category, a NAICS title or a NAICS
code), region, city, country and since (measured on or after a date); the next page is cursor= the answer's
next_cursor. GET /website-gaps/{id} is one website.
curl -s "https://triremes.com/api/v1/website-gaps?category=dentists®ion=TX" \
-H "Authorization: Bearer $TRIREMES_KEY"
Buy
POST /purchases with the problem's slug and what it sells, or a website's id and website_gaps.
Credit is spent and the purchase made in one step; send an Idempotency-Key so a retried request never buys twice. Buying
what you already own, through the API or on the site, returns it at no charge.
curl -s -X POST "https://triremes.com/api/v1/purchases" \
-H "Authorization: Bearer $TRIREMES_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"item": "inventory-sync-drops-orders-0a1b2c3d4e", "kind": "lead"}'
curl -s -X POST "https://triremes.com/api/v1/purchases" \
-H "Authorization: Bearer $TRIREMES_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"item": "site-17", "kind": "website_gaps"}'
The answer is 201 when credit was spent, 200 when it was not, and holds the purchase's content: a
lead's businesses (business, email, the page it was published on), the idea report, or a website's sites
(the business, its website, its contact page, and each finding as measured on its date).
Your purchases and balance
GET /purchases lists everything bought with your account's address, through the API or on the site;
GET /purchases/{id} fetches one again with its content; GET /balance is your credit, today's spending and your
subscription.
curl -s "https://triremes.com/api/v1/balance" -H "Authorization: Bearer $TRIREMES_KEY"
Errors
Every error is {"error": {"code": "...", "message": "..."}}.
| Status | Code | Means |
|---|---|---|
| 400 | invalid_parameter, invalid_json | The request is not as described: a parameter that is
not one, a value of the wrong form, or a body other than exactly {"item", "kind"}. |
| 415 | unsupported_media_type | A purchase's body is not sent as Content-Type: application/json. |
| 401 | invalid_key | No key, or one not valid or revoked. |
| 402 | insufficient_credit | Not enough credit: buy more on your account's API page. |
| 403 | subscription_inactive | The subscription is not active. |
| 404 | not_found | No such problem, website, purchase or endpoint. |
| 409 | kind_unavailable, idempotency_key_reused | The problem sells the other kind now; or the key was used for another purchase. |
| 410 | gone | The problem is no longer listed. |
| 429 | rate_limited, daily_spend_cap | Wait the seconds in Retry-After. |
API terms
- The terms for buyers apply to everything bought through the API.
- Contacts and reports you buy are for your own use. You may not resell, republish, share or sublicense them, or the API's answers, in whole or in part.
- Use the contacts lawfully, and only as the terms for buyers allow.
- Keep your keys secret. You are responsible for every request made with them; revoke a key you think has leaked.
- Stay within the rate limit and the daily spend cap, and do not try to get around them.
- The subscription is billed monthly until you cancel; cancelling ends it when the month paid for ends. All purchases are final. Credits never expire and are not refunded in cash, except where we decide to.
- We may suspend a key or an account that breaks these terms, and may change prices or these terms with notice on this page.