MakerWorld API — Design Contests & Entry Counts
Documentation menu
FetchLayer FetchLayer API

List design contests

Return MakerWorld's design contests — past, running and upcoming — with each one's theme, brief, start and end dates, entry and participant counts, view count, allowed licenses, remix-only flag, and which phase it is in. Filter by status, or pass `contest` to get a single one. Contests are what drive upload spikes on MakerWorld, so a running contest is the best single predictor of what is about to be published.

POST /contests Discovery
https://api.fetchlayer.dev/makerworld/contests
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

contest string optional

Return only this contest, by id or contest URL.

status string optional

Return only contests in this phase: upcoming, running, judging, or finished.

limit number optional

Maximum contests returned (max 200), or -1 for everything available. (default: 20)

timeoutMs number optional

Per-request time limit in milliseconds (max 600000).

format string optional

json or markdown. (default: json)

Response Fields

contests

List design contests

contests object[]

The contests matching the filter.

contests[].contestId string

Contest id — pass it back as contest to read one on its own.

contests[].theme string

The contest theme, with name and contestUrl alongside it.

contests[].rules string

The contest brief, as HTML.

contests[].status string

upcoming, running, judging, or finished.

contests[].startsAt string

Start date, with endsAt alongside it.

contests[].entryCount number

Models entered.

contests[].participantCount number

Distinct designers who entered.

contests[].allowedLicenses string[]

Licenses an entry is allowed to carry.

contests[].isRemixOnly boolean

Whether entries must be remixes.

contestCount number

Number of contests in this response.

notes string[]

Caveats about this specific result — a walk that stopped early, a listing MakerWorld truncated, an upstream ceiling that was hit. Read it: an empty array means the result is complete, a non-empty one means it is not.

requestedUrl string

The MakerWorld page this result corresponds to.

scrapedAt string

ISO timestamp of when the data was retrieved.

blocked boolean

Always false on a successful response.

Request

curl -X POST "https://api.fetchlayer.dev/makerworld/contests" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"status":"running","limit":20}'

Response

{
  "contestCount": 3,
  "notes": [],
  "contests": [
    {
      "contestId": "188",
      "name": "Desk Upgrade Contest",
      "theme": "Workspace",
      "status": "running",
      "startsAt": "2026-09-01",
      "endsAt": "2026-09-30",
      "entryCount": 412,
      "participantCount": 288,
      "allowedLicenses": [
        "CC0",
        "BY"
      ]
    }
  ]
}