GitHub
Releases become versions, the README summary becomes the description and topics suggest the category.
Developers
Keep one feed up to date and every listing, comparison and ranking follows it. The same catalog is open to read over a JSON API.
Every source goes through the same four steps. Nothing is published before a person on our team reviews the first import.
A PAD file, a repository or an OpenAPI document on your own domain.
The schema is checked field by field and fetched only from public addresses.
New listings wait in moderation until an administrator publishes them.
Scheduled re-syncs pick up new versions and the rank recomputes on each one.
PAD JSON 2.0 is the recommended format: one document per product, descriptions per locale, pricing in minor units and an optional webhook.
{
"$schema": "https://mysoftrank.com/schemas/msr-2.0.json",
"protocol": {
"name": "MSR JSON",
"version": "2.0",
"author": "Antonio Santos",
"specification_license": "CC-BY-4.0",
"reference_implementation_license": "MIT",
"canonical_url": "https://mysoftrank.com/schemas/msr-2.0.json"
},
"pad_version": "2.0",
"vendor": {
"name": "Lanternly Labs",
"website": "https://lanternly.dev",
"country_code": "BR"
},
"software": {
"slug": "lanternly",
"name": "Lanternly",
"kind": "saas",
"category": "observability",
"license_type": "freemium",
"platforms": [
"web",
"linux"
],
"homepage": "https://lanternly.dev",
"integrations": [
"kubernetes",
"slack",
"python"
],
"pricing": {
"model": "usage",
"price_from_cents": 0,
"currency": "USD"
},
"descriptions": {
"en": {
"summary": "Uptime checks that open the exact failing trace."
},
"pt-BR": {
"summary": "Checagens de disponibilidade que abrem o trace exato da falha."
},
"es": {
"summary": "Chequeos de disponibilidad que abren la traza exacta del fallo."
}
}
},
"release": {
"version": "3.4.0",
"released_on": "2026-09-15",
"release_type": "minor",
"notes_url": "https://lanternly.dev/changelog#3.4.0"
},
"webhook": {
"url": "https://lanternly.dev/hooks/mysoftrank",
"events": [
"listing.published",
"rank.changed"
]
}
}
Required: pad_version, vendor.name, software.slug, software.name and release.version. Prices are integers in minor units with an ISO 4217 currency. Contact names, e-mails and phone numbers are ignored and never stored.
<XML_DIZ_INFO>
<Company_Info><Company_Name>Lanternly Labs</Company_Name></Company_Info>
<Program_Info>
<Program_Name>Lanternly</Program_Name>
<Program_Version>3.4.0</Program_Version>
<Program_Release_Year>2026</Program_Release_Year>
</Program_Info>
</XML_DIZ_INFO>
No PAD file? Point us at what you already publish and we map it to the same listing fields.
Releases become versions, the README summary becomes the description and topics suggest the category.
Same mapping as GitHub, including self-managed instances reachable on a public address.
For API products: info.version drives freshness and the document earns the OpenAPI badge on the listing.
We notify your endpoint when a listing is published or its rank changes. Every delivery is signed with HMAC-SHA256 in the X-MySoftRank-Signature header.
POST /hooks/mysoftrank HTTP/1.1
Content-Type: application/json
X-MySoftRank-Event: rank.changed
X-MySoftRank-Timestamp: 1789660800
X-MySoftRank-Signature: sha256=d96595d15c50f9f26d0e8a3b0f7a3fcdae6ca69ae2c3df80f829d82b591ee0da
{"event":"rank.changed","software":"lanternly","rank":{"previous":14,"current":9,"score":71.4},"computed_on":"2026-09-17"}
import hashlib, hmac
def is_valid(secret: bytes, timestamp: str, body: bytes, header: str) -> bool:
signed = timestamp.encode() + b"." + body
expected = "sha256=" + hmac.new(secret, signed, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, header)
Published listings only. Responses are JSON, paginated with page and per_page.
| Endpoint | Returns | Authentication | Rate limit |
|---|---|---|---|
GET /.well-known/msr.json |
Authoritative MySoftRank MSR JSON manifest and metadata | None | Set by your API plan |
GET /schemas/msr-2.0.json |
Official MSR JSON 2.0 JSON Schema (Draft 2020-12) | None | Set by your API plan |
GET /api/v1/software |
Published software, filtered by category and search text | None | Set by your API plan |
GET /api/v1/software/{slug} |
One listing with versions, sources and descriptions | None | Set by your API plan |
GET /api/v1/categories |
Every category with its listing count | None | Set by your API plan |
POST /api/v1/submit/pad |
Submit a PAD document by URL or body for moderation | Bearer token | 10 requests per minute per address |
Reading the catalog is free for small projects. Paid plans raise limits and add bulk data licensing.
API plans buy access to data, never a better position in it.