One URL returns all 207 free posting platforms — name, URL, and domain — as JSON or XML. Built for automation.
Both return the complete directory. Pick whichever format your system prefers.
/api/platforms also works and defaults to JSON
(add ?format=xml to switch).
# Every platform name + URL, as JSON curl -s https://freepostfinder.com/api/platforms.json # Same data as XML curl -s https://freepostfinder.com/api/platforms.xml # Just the names and URLs, using jq curl -s https://freepostfinder.com/api/platforms.json \ | jq -r '.platforms[] | "\(.name)\t\(.url)"'
{
"meta": {
"source": "FreePostFinder",
"source_url": "https://freepostfinder.com",
"api_version": "1.0",
"generated_at": "2026-08-05T10:03:22+00:00",
"count": 207,
"total": 207 },
"platforms": [
{
"name": "ArticleCube",
"slug": "articlecube",
"url": "https://www.articlecube.com",
"domain": "articlecube.com",
"detail_url": "https://freepostfinder.com/platform/articlecube"
}
]
}
<freepostfinder>
<meta>
<source>FreePostFinder</source>
<count>207</count>
</meta>
<platforms>
<platform>
<name>ArticleCube</name>
<slug>articlecube</slug>
<url>https://www.articlecube.com</url>
<domain>articlecube.com</domain>
<detail_url>https://freepostfinder.com/platform/articlecube</detail_url>
</platform>
</platforms>
</freepostfinder>
All optional. With none, you get every platform.
| Parameter | Values | Description |
|---|---|---|
fields |
minimal | full | minimal (default) returns name, slug, url, domain, detail_url. full adds summary, content types, risk, verification, guidelines and source links. |
format |
json | xml | Only needed on /api/platforms. The .json / .xml extension always wins. |
type |
content-type slug | Only platforms supporting this content type, e.g. type=article. |
types |
comma-separated slugs | Platforms supporting ALL listed types, e.g. types=article,video. |
search |
text | Matches name, domain, URL, summary and best-for text. |
risk_level |
low | medium | high | unknown | Filter by risk level. |
verification_status |
verified | needs_review | unverified | Filter by verification status. |
moderation_strictness |
low | medium | high | unknown | Filter by how strictly the platform moderates. |
free_public_posting_status |
yes | partial | no | unknown | Filter by free public posting support. |
registration_required |
0 | 1 | Whether an account is needed to post. |
sort |
name_asc | name_desc | most_types | recently_updated | last_checked | risk_level | verified_first | Result ordering. Defaults to name_asc. |
limit |
1–1000 | Maximum rows to return. |
offset |
integer | Rows to skip, for paging through results. |
pretty |
1 | Pretty-print the JSON output. |
# Verified, low-risk platforms that accept articles — with full detail
curl -s "https://freepostfinder.com/api/platforms.json?type=article&risk_level=low&verification_status=verified&fields=full"
Valid values for type and types.
article
blog
post
story
newsletter
website
page
forum
qa
directory
listing
repository
community
slides
video
image
reels-shorts
live-stream
events
reviews
code-app
documents
maps
Cache-Control: public, max-age=3600 and an ETag. Send If-None-Match to get a cheap 304 when nothing changed. Fetching once an hour is plenty — the data changes slowly.Access-Control-Allow-Origin: *), so browser-side JavaScript can call it directly.slug as the key for a platform. Names and URLs can change; slugs are stable.needs_review have not been fully checked. Always confirm a platform’s own terms before posting.Invalid parameters return HTTP 400 with a machine-readable body in the format you requested.
{
"error": {
"code": "invalid_filter",
"message": "risk_level must be one of: low, medium, high, unknown.",
"docs": "https://freepostfinder.com/api"
}
}
The full directory is searchable and filterable in your browser.