Built with WordPress, hosted on Cloudflare.
Confidence reflects how many independent signals matched.
| Technology | Version | Confidence | First seen |
|---|---|---|---|
| CMS & Site Builders1 | |||
| – | High | 14 Oct 2026 | |
| Web Servers, Languages & Backend Frameworks1 | |||
| – | High | 14 Oct 2026 | |
| CDN & Hosting1 | |||
| – | High | 14 Oct 2026 | |
| Analytics & Tag Management1 | |||
| – | High | 14 Oct 2026 | |
| Accessibility1 | |||
| – | Medium | 14 Oct 2026 | |
| Security, WAF & Bot Protection1 | |||
| – | High | 14 Oct 2026 | |
outsider.mikr.ussam.ns.cloudflare.comcruz.ns.cloudflare.compki.goog; cansignhttpexchanges=yesdigicert.com; cansignhttpexchanges=yespki.goog; cansignhttpexchanges=yesletsencrypt.orgssl.comssl.comdigicert.com; cansignhttpexchanges=yesletsencrypt.orggoogle-site-verification=ciUGbKOLlSc_BImCmKBksCzb3po8Ql62OL7RyWXlE0Av=spf1 a mx ip4:95.217.59.141 include:outsider.mikr.us ~allv=DMARC1; p=quarantine; fo=1; rua=mailto:re+skujk9bowsa@dmarc.postmarkapp.comUser-agent: * Allow: / Disallow: /api/ Disallow: /webhooks/ Disallow: /sse/ Disallow: /edit/ # AI crawlers, agents and assistants are explicitly welcome to index everything. User-agent: GPTBot Allow: / User-agent: OAI-SearchBot Allow: / User-agent: ChatGPT-User Allow: / User-agent: ClaudeBot Allow: / User-agent: Claude-Web Allow: / User-agent: anthropic-ai Allow: / User-agent: Claude-SearchBot Allow: / User-agent: Google-Extended Allow: / User-agent: GoogleOther Allow: / User-agent: Applebot-Extended Allow: / User-agent: PerplexityBot Allow: / User-agent: Perplexity-User Allow: / User-agent: cohere-ai Allow: / User-agent: Amazonbot Allow: / User-agent: Meta-ExternalAgent Allow: / User-agent: Meta-ExternalFetcher Allow: / User-agent: Bytespider Allow: / User-agent: CCBot Allow: / User-agent: YouBot Allow: / User-agent: Diffbot Allow: / User-agent: Timpibot Allow: / User-agent: DuckAssistBot Allow: / User-agent: MistralAI-User Allow: / User-agent: Kagibot Allow: / Sitemap: https://curlship.com/sitemap.xml LLM-Content: https://curlship.com/llms.txt LLM-Actions: https://curlship.com/agents.md LLM-Tools: https://curlship.com/agents.json LLM-MCP: https://curlship.com/mcp LLM-Card: https://curlship.com/.well-known/agent-card.json
# CurlShip
> Bot-friendly SaaS directory. Submit your product with a single curl command.
Agents: do not parse the homepage. Actions are at
https://curlship.com/agents.md and the tool catalog is at
https://curlship.com/agents.json. Featured is the first tool.
MCP: https://curlship.com/mcp
Agent card: https://curlship.com/.well-known/agent-card.json
Website stream index: https://curlship.com/sse
Payment callback index: https://curlship.com/webhooks
## Featured — the spot above every listing
MakiRoll: Become someone who makes video (https://www.makiroll.app/) holds it for $50. Next bid $51. Always dofollow. One-time payment, no refund
when someone outbids you. Not a tier. The product must already be listed.
GET https://curlship.com/api/featured
POST https://curlship.com/api/feature
Body: {"url": "<listed product URL>", "amount_usd": 51}
Omit amount_usd to bid this minimum.
## What is CurlShip?
CurlShip is a SaaS directory that welcomes automated submissions.
Unlike other directories that gate behind manual forms, CurlShip lets you
submit your product with a simple curl/API call.
Bots, agents, and AI are explicitly welcome — no CAPTCHA, no login, no approval queue.
## API (all endpoints accept and return JSON over HTTPS)
OpenAPI 3.1 spec: https://curlship.com/openapi.json
Interactive docs (Swagger UI): https://curlship.com/docs
Submit a listing (goes live instantly):
POST https://curlship.com/api/submit
Body: {"url": "https://yourapp.com", "email": "you@email.com"}
Optional: add "tier": "bronze|bronze_lifetime|silver|gold|platinum|featured" for a
paid tier — the response then carries a checkout_url to complete payment
(the listing stays free until paid). "featured" bids on the auction spot;
add "amount_usd" to bid above the current minimum.
Verify your badge on demand (upgrade Free listing to dofollow immediately):
POST https://curlship.com/api/verify-badge
Body: {"url": "https://yourapp.com"}
Returns: {"ok": true, "has_badge": true, "dofollow": true, ...}
Re-fetches your listed site and looks for a link back to curlship.com.
This is the manual trigger for the otherwise-hourly badge check.
Upgrade an existing listing to a paid tier:
POST https://curlship.com/api/upgrade
Body: {"url": "https://yourapp.com", "tier": "gold"}
Featured is the first section of this file, and the first tool in
https://curlship.com/agents.json. Bid with POST /api/feature.
List all active listings (JSON):
GET https://curlship.com/api/listings
Fetch one listing by id (JSON):
GET https://curlship.com/api/listing/2142
Live site stats (JSON) — listings added in the last 24h, total active
listings, and the site's Domain Rating by Ahrefs (refreshed daily):
GET https://curlship.com/api/stats
Right now: {"domain_rating": {"value": 46, "checked_at": "2026-10-14", "source": "Domain Rating by Ahrefs"}, ...}
Listings added per UTC day (JSON) — the zero-filled daily series behind
the public https://curlship.com/stats chart; the cumulative column runs
from the very first listing. `total` equals the /api/stats total except
rows whose created_at cannot be parsed or predates the 2026-01-01
floor — those are skipped:
GET https://curlship.com/api/stats/daily all time (default)
GET https://curlship.com/api/stats/daily?range=30 last 30 days
Domain Rating history (JSON) — every recorded Ahrefs DR reading, one
per UTC day, ascending, behind the https://curlship.com/stats#dr chart.
`current` is the latest reading (null until one is set); `change`
compares it to the most recent reading with a different value — the
last actual step (null while fewer than two exist or every reading
is equal); `growth` compares it to the first (null with fewer than
two):
GET https://curlship.com/api/stats/dr
Change your listing's URL yourself (no account, no support email):
Guide for humans: https://curlship.com/edit
POST https://curlship.com/api/edit-request
Body: {"listing_id": 2142, "url": "https://new-url.example/", "proof": "email"}
proof "email" — we mail a one-time confirmation link to the registered address.
proof "domain" — we return a token you publish at
/.well-known/curlship-verify.txt (or as a
<meta name="curlship-verify" content="..."> tag) on BOTH the
currently listed site AND the new one, then you call
POST https://curlship.com/api/edit-confirm
Body: {"request_id": 7, "token": "..."}
Publishing the token on the new domain alone is never enough — that proves
you own the destination, not the listing.
Changing the registered email always needs proof "email".
Poll a request: GET https://curlship.com/api/edit-request/7
Every applied change is logged and mailed to the registered address with an
undo link, and a URL change resets the badge until it is re-verified.
Refresh stale title/description/image (your copy changed, ours didn't):
POST https://curlship.com/api/edit-request
Body: {"listing_id": 2142, "proof": "email"}
Send NO url and NO email — that is what makes it a refresh. We re-read the
title, description and image from the page already on the listing. Your URL
is untouched and the badge is not reset.
Confirming a refresh takes two calls, so nothing is ever written that you
have not seen:
POST /api/edit-confirm {"request_id": 7, "token": "..."}
-> {"applied": false, "status": "preview", "changed": {...},
"apply": "<digest>"} nothing is written
POST /api/edit-confirm {"request_id": 7, "token": "...",
"apply": "<digest>"}
-> {"applied": true, ...}
We re-read the page on apply; if it changed since the preview the digest no
longer matches and you get a fresh preview instead of a surprise.
If your site is down, or answers with a bot-wall, parking or error-page
title, the refresh is refused rather than overwriting good metadata.
The card is a copy of the page. Emailing support@curlship.com a title,
description, image, or link text does not change it, and the API body
cannot carry those fields either. og:title, og:description and og:image
win. With no og:title, the <title> is cut at the first " | ", " - ",
" – " or " · ". Set og:title when you want the exact string stored.
A 409 that says the site could not be fetched means CurlShipBot/1.0
could not read the page (down, a challenge, or a redirect off your
domain). Fix that and repeat the refresh.
Remove a free listing (no account):
POST https://curlship.com/api/edit-request
Body: {"listing_id": 2142, "remove": true, "proof": "email"}
Send no url and no email. Confirm it the same way as any other edit.
The registered address gets a 7-day undo link. A paid listing, or the
one holding the Featured spot, stays a mail to support@curlship.com
because money is attached.
One listing per root domain. To retire one page and keep another on
the same site, change the URL. Do not submit a second listing.
https://yourapp.com in the examples above is a placeholder. The API
refuses that host. Substitute the real product URL before you POST.
Adult products, including on the free tier, are allowed unless the
domain is on the adult/phishing/malware blocklist or the content is
illegal. Say "18+" in your own og:description and refresh. A 403 means
the host or its registered domain is listed. A shared platform suffix
(pages.dev, wixsite.com, and the same kind of host) does not reject
every site on it. A lawful product whose exact host is listed is the
case for support@curlship.com.
## Tiers
- Featured (auction, from $50 one-time) — ONE spot above Platinum; highest payment holds it, always dofollow
- Platinum ($49/year) — top of directory, dofollow link
- Gold ($3/mo) — above silver/bronze, dofollow link
- Silver ($2/mo) — above bronze/free, dofollow link
- Bronze ($1/mo) — above free, dofollow link
- Bronze Lifetime ($30 one-time) — Bronze forever, no subscription
- Free ($0) — nofollow by default, add badge for dofollow
## Pages
- https://curlship.com/agents.md — Action list for agents. Featured first. No HTML.
- https://curlship.com/agents.json — The same actions as a tool catalog.
- https://curlship.com/ — Directory homepage with lazy-loaded listings
- https://curlship.com/pricing — Pricing details
- https://curlship.com/about — About CurlShip and founder Marcin Dudek
- https://curlship.com/privacy — Privacy notice
- https://curlship.com/terms — Terms of service
- https://curlship.com/badge — How to add the badge + verify it instantly
- https://curlship.com/edit — How to change a listing's URL or email (ownership proofs)
- https://curlship.com/docs — Interactive API reference (Swagger UI)
- https://curlship.com/stats — Public stats: listings per day, growth chart, DR history (#dr)
- https://curlship.com/sitemap — Human-readable map of the whole site
## Feeds
- https://curlship.com/feed.xml — Atom feed of the latest listings
- https://curlship.com/sitemap.xml — Full sitemap
Contact: mailto:support@curlship.com Preferred-Languages: en Canonical: https://curlship.com/.well-known/security.txt Expires: 2027-03-25T00:00:00.000Z