StudioSearchResult

game development outsourcingstudio directoryart servicesprogramming servicesQA Testingconsole development

Properties

Name Type Description
total integer How many studios matched in the directory, before the cap. This is the number to quote.
returned integer How many are in `studios`.
capped boolean True when `total` exceeds `returned`, i.e. there are matches you have not seen.
studios array
browseUrl string The page on the site that shows this filter. Where the filter has no single page — a region or a team size, which /browse cannot express — this URL is broader than the result set, never narrower.
appliedFilters object What was actually understood and applied, plus an `ordering` note describing how the list was sorted. A filter you sent that is missing here was not applied.
citation object
caveats object
View JSON Schema on GitHub

JSON Schema

gamedevoutsourcing-com-studio-search-result-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/gamedevoutsourcing-com/json-schema/gamedevoutsourcing-com-studio-search-result-schema.json",
  "title": "StudioSearchResult",
  "x-generated": "2026-11-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/gamedevoutsourcing-com-openapi.json#/components/schemas/StudioSearchResult",
  "type": "object",
  "required": [
    "total",
    "returned",
    "capped",
    "studios",
    "browseUrl",
    "appliedFilters",
    "citation",
    "caveats"
  ],
  "properties": {
    "total": {
      "type": "integer",
      "description": "How many studios matched in the directory, before the cap. This is the number to quote."
    },
    "returned": {
      "type": "integer",
      "description": "How many are in `studios`."
    },
    "capped": {
      "type": "boolean",
      "description": "True when `total` exceeds `returned`, i.e. there are matches you have not seen."
    },
    "studios": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/StudioSummary"
      }
    },
    "browseUrl": {
      "type": "string",
      "format": "uri",
      "description": "The page on the site that shows this filter. Where the filter has no single page — a region or a team size, which /browse cannot express — this URL is broader than the result set, never narrower."
    },
    "appliedFilters": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "What was actually understood and applied, plus an `ordering` note describing how the list was sorted. A filter you sent that is missing here was not applied."
    },
    "citation": {
      "$ref": "#/$defs/Citation"
    },
    "caveats": {
      "$ref": "#/$defs/Caveats"
    }
  },
  "$defs": {
    "Caveats": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "The standing qualifications on everything this directory publishes. They travel with every payload rather than being stated once, because a caller quotes one response, not a preamble it read earlier. Reproduce the ones that bear on what you are saying."
    },
    "Citation": {
      "type": "string",
      "description": "The attribution line to reproduce when quoting anything from this response."
    },
    "StudioRankingRef": {
      "type": "object",
      "description": "A published position a studio holds in one ranking list.",
      "required": [
        "label",
        "rank",
        "sliceSize",
        "url"
      ],
      "properties": {
        "label": {
          "type": "string",
          "description": "The list's own name, e.g. \"3D Art in Poland\"."
        },
        "rank": {
          "type": "integer",
          "minimum": 1
        },
        "sliceSize": {
          "type": "integer",
          "description": "How many studios are in the list, ranked or not."
        },
        "url": {
          "type": "string",
          "format": "uri"
        }
      }
    },
    "StudioSummary": {
      "type": "object",
      "description": "A studio as it appears in search results. Contact details are absent by design.",
      "required": [
        "slug",
        "name",
        "url",
        "services",
        "engines",
        "platforms",
        "artStyles",
        "claimed",
        "studioConfirmed",
        "featured"
      ],
      "properties": {
        "slug": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string",
          "format": "uri",
          "description": "The canonical profile page. Reproduce this when citing the studio."
        },
        "tagline": {
          "type": [
            "string",
            "null"
          ],
          "description": "One-line summary, as recorded by this directory."
        },
        "country": {
          "type": [
            "string",
            "null"
          ],
          "description": "Canonical country label. Null where no country is recorded, which is true of a meaningful minority of listings."
        },
        "city": {
          "type": [
            "string",
            "null"
          ],
          "description": "City, where one is recorded."
        },
        "teamSize": {
          "type": [
            "string",
            "null"
          ],
          "description": "Headcount bucket, e.g. \"11-50\". Null where not recorded."
        },
        "yearFounded": {
          "type": [
            "integer",
            "null"
          ]
        },
        "services": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Display labels, not enum values. Not exhaustive: a studio can do work it has not tagged."
        },
        "engines": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "platforms": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "artStyles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "website": {
          "type": [
            "string",
            "null"
          ],
          "description": "The studio's own site."
        },
        "claimed": {
          "type": "boolean",
          "description": "The studio manages this listing. Most listings are unclaimed, meaning this directory researched and added them."
        },
        "studioConfirmed": {
          "type": "boolean",
          "description": "This directory found the studio's badge live on the studio's own domain. That proves domain control and nothing else: it is not an audit, it cannot be bought, and false is not a warning sign."
        },
        "featured": {
          "type": "boolean",
          "description": "The listing carries a paid tier, which lifts it above unpaid listings in search order. It says nothing about quality and does not affect whether the studio matches a filter."
        },
        "topRanking": {
          "oneOf": [
            {
              "$ref": "#/$defs/StudioRankingRef"
            },
            {
              "type": "null"
            }
          ],
          "description": "Best published ranking position, or null if the studio holds none."
        }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/gamedevoutsourcing-com-studio-search-result"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.