Comunicate.eu Public catalogue API

Seven routes that work with no key at all: the network’s niches, one niche with sample publications, catalogue search, the budget plan, the catalogue figures, the market statistics and the campaign types. This is the same data the public site shows, served as JSON — useful for comparisons, for an assistant that wants to know what is in the network, or for anyone who wants to see the shape of the data before opening an account. Search has limits on purpose: the inventory is not downloadable in one request.

GitHub OpenAPI

Operations 7

3 of 7 operations are conformant: apis.io called them with no credentials and the responses matched this contract; 3 more answered but could not be checked against a schema. Checked 2026-11-12. how this works · status file

GET /public/catalog Catalogue search observed #
GET /public/plan Budget plan #
GET /public/campaign-types Campaign types observed #
GET /public/stats Catalogue figures conformant #
GET /public/niches The network’s niches observed #
GET /public/niches/{slug} One niche, with sample publications conformant #
GET /public/statistici-piata Market statistics conformant #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/comunicate-eu:comunicate-eu-public-catalogue-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

comunicate-eu-public-catalogue-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Comunicate Eu Public catalogue API
  version: 1.0.0
  contact:
    url: https://comunicate.eu/ro/contact
  description: 'Operations tagged Public catalogue across 2 of this provider''s published API definitions: comunicate-eu-openapi.json, comunicate-eu-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://app.comunicate.eu/api/v1
tags:
- name: Public catalogue
  description: 'Seven routes that work with no key at all: the network’s niches, one niche with sample publications, catalogue search, the budget plan, the catalogue figures, the market statistics and the campaign types. This is the same data the public site shows, served as JSON — useful for comparisons, for an assistant that wants to know what is in the network, or for anyone who wants to see the shape of the data before opening an account. Search has limits on purpose: the inventory is not downloadable in one request.'
paths:
  /public/catalog:
    get:
      operationId: get__public_catalog
      summary: Catalogue search
      description: 'Searches publications by text, niche, campaign type, DA and price. At most 20 per page and the first 120 per search.


        No authentication required: this route is open to anyone.'
      tags:
      - Public catalogue
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    type: integer
                    description: How many publications match.
                  nextCursor:
                    type: integer
                    description: The next page, or null.
                  entries:
                    type: string
                    description: The publications, with the price per campaign type.
              example:
                total: 130
                nextCursor: 5
                entries: []
        '400':
          description: Invalid input
      security: []
      x-codeSamples:
      - lang: Shell
        label: curl
        source: curl 'https://app.comunicate.eu/api/v1/public/catalog?niche=sanatate&limit=5'
    servers:
    - url: https://app.comunicate.eu/api/v1
  /public/plan:
    get:
      operationId: get__public_plan
      summary: Budget plan
      description: 'Publication packages for a budget in lei, by niche, topic (`cuvinte`) and city (`zona`). For other options, send back the `exclude` list from the response.


        No authentication required: this route is open to anyone.'
      tags:
      - Public catalogue
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  pachete:
                    type: string
                    description: Recommended mix, Premium and Economy, with totals with and without VAT.
                  exclude:
                    type: string
                    description: The publications to skip on the next request.
              example:
                posibil: true
                pachete: []
                exclude: []
        '400':
          description: Invalid input
      security: []
      x-codeSamples:
      - lang: Shell
        label: curl
        source: curl 'https://app.comunicate.eu/api/v1/public/plan?bugetLei=1000&nise=sanatate&zona=Cluj'
    servers:
    - url: https://app.comunicate.eu/api/v1
  /public/campaign-types:
    get:
      operationId: get__public_campaign_types
      summary: Campaign types
      description: 'What each campaign type means and what the text must or must not contain.


        No authentication required: this route is open to anyone.'
      tags:
      - Public catalogue
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: The campaign type.
                  rezumat:
                    type: string
                    description: What the type means.
                  obligatoriu:
                    type: string
                    description: What the text must contain.
                  interzis:
                    type: string
                    description: What the text must not contain.
              example:
              - id: SEO
                rezumat: …
                obligatoriu: []
                interzis: []
        '400':
          description: Invalid input
      security: []
      x-codeSamples:
      - lang: Shell
        label: curl
        source: curl 'https://app.comunicate.eu/api/v1/public/campaign-types'
    servers:
    - url: https://app.comunicate.eu/api/v1
  /public/stats:
    get:
      operationId: get__public_stats
      summary: Catalogue figures
      description: 'How many active publications the network has, and across how many niches. No key needed.


        No authentication required: this route is open to anyone.'
      tags:
      - Public catalogue
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  publications:
                    type: integer
                    description: Active publications.
                  niches:
                    type: integer
                    description: Niches with publications.
              example:
                publications: 3822
                niches: 22
        '400':
          description: Invalid input
      security: []
      x-codeSamples:
      - lang: Shell
        label: curl
        source: curl 'https://app.comunicate.eu/api/v1/public/stats'
    servers:
    - url: https://app.comunicate.eu/api/v1
  /public/niches:
    get:
      operationId: get__public_niches
      summary: The network’s niches
      description: 'All niches, with the publication count and average authority of each. No key needed.


        No authentication required: this route is open to anyone.'
      tags:
      - Public catalogue
      parameters:
      - name: locale
        in: query
        required: false
        description: Language of names and descriptions. Defaults to `ro`.
        schema:
          type: string
          enum:
          - ro
          - en
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  slug:
                    type: string
                    description: The niche identifier, used in the next route.
                  name:
                    type: string
                    description: The niche name in the requested language.
                  description:
                    type: string
                    description: What kind of material the publications in this niche accept.
                  publicationCount:
                    type: integer
                    description: How many active publications the niche has.
                  averageDa:
                    type: integer
                    description: Average domain authority (Moz DA).
              example:
              - slug: stiri
                name: Știri
                description: Publicațiile de actualitate generală din rețea…
                publicationCount: 1299
                averageDa: 38
        '400':
          description: Invalid input
      security: []
      x-codeSamples:
      - lang: Shell
        label: curl
        source: curl 'https://app.comunicate.eu/api/v1/public/niches?locale=ro'
    servers:
    - url: https://app.comunicate.eu/api/v1
  /public/niches/{slug}:
    get:
      operationId: get__public_niches_slug
      summary: One niche, with sample publications
      description: 'The requested niche and a few of its publications, with authority, turnaround and price. It is a sample, not the inventory: the full list is visible from an account.


        No authentication required: this route is open to anyone.'
      tags:
      - Public catalogue
      parameters:
      - name: slug
        in: path
        required: true
        schema:
          type: string
      - name: locale
        in: query
        required: false
        description: Language of names and descriptions. Defaults to `ro`.
        schema:
          type: string
          enum:
          - ro
          - en
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  slug:
                    type: string
                    description: The niche identifier.
                  name:
                    type: string
                    description: The niche name.
                  publicationCount:
                    type: integer
                    description: How many publications the niche has in total.
                  averageDa:
                    type: integer
                    description: The niche’s average authority.
                  publications:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
                    description: 'The sample: `domain`, `language`, `metricDa`, `metricPa`, `deliveryDays`, `priceCents`, `currency`.'
              example:
                slug: stiri
                name: Știri
                publicationCount: 1299
                averageDa: 38
                publications:
                - domain: corrierefiorentino.corriere.it
                  language: it
                  metricDa: 92
                  metricPa: 62
                  deliveryDays: 2
                  priceCents: 1296200
                  currency: RON
        '400':
          description: Invalid input
      security: []
      x-codeSamples:
      - lang: Shell
        label: curl
        source: curl 'https://app.comunicate.eu/api/v1/public/niches/stiri?locale=ro'
    servers:
    - url: https://app.comunicate.eu/api/v1
  /public/statistici-piata:
    get:
      operationId: get__public_statistici_piata
      summary: Market statistics
      description: 'The catalogue’s aggregate figures: how many publications, how many from our own network, the authority distribution, turnaround times and the price for each campaign type. The data behind the “What an advertorial costs” page.


        No authentication required: this route is open to anyone.'
      tags:
      - Public catalogue
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  publicatii:
                    type: integer
                    description: Active publications with a public price.
                  retea:
                    type: integer
                    description: How many of them are our own.
                  autoritate:
                    type: object
                    additionalProperties: true
                    description: Minimum, maximum, median, mean and the distribution across bands.
                  termene:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
                    description: How many publications deliver in how many days.
                  preturi:
                    type: array
                    items:
                      type: object
                      additionalProperties: true
                    description: 'Per campaign type: price, minimum, maximum and how many publications accept it.'
              example:
                publicatii: 3822
                retea: 109
                autoritate:
                  minim: 1
                  maxim: 92
                  mediana: 35
                  medie: 34
                termene:
                - zile: 2
                  cate: 3822
                preturi:
                - tip: PRESS_RELEASE
                  lei: 35
                  minim: 35
                  maxim: 14868
                  publicatii: 1737
        '400':
          description: Invalid input
      security: []
      x-codeSamples:
      - lang: Shell
        label: curl
        source: curl 'https://app.comunicate.eu/api/v1/public/statistici-piata'
    servers:
    - url: https://app.comunicate.eu/api/v1
components:
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      description: API key from Integrations (bk_live_…)
    oauth2:
      type: oauth2
      description: OAuth 2.1 with PKCE (S256). Dynamic client registration at https://app.comunicate.eu/api/v1/oauth/register. The access token is an API key and is accepted everywhere an API key is.
      flows:
        authorizationCode:
          authorizationUrl: https://app.comunicate.eu/api/v1/oauth/authorize
          tokenUrl: https://app.comunicate.eu/api/v1/oauth/token
          refreshUrl: https://app.comunicate.eu/api/v1/oauth/token
          scopes:
            CATALOG_READ: catalog read
            ARTICLES_READ: articles read
            ARTICLES_WRITE: articles write
            MEDIA_WRITE: media write
            PUBLICATIONS_READ: publications read
            PUBLICATIONS_WRITE: publications write
            CAMPAIGNS_READ: campaigns read
            CAMPAIGNS_WRITE: campaigns write
            BALANCE_READ: balance read
            REPORTS_READ: reports read
x-refined-from:
- comunicate-eu-openapi.json
- comunicate-eu-openapi.json
x-provenance:
  method: harvested
  publisher: Comunicate.eu
  source: https://app.comunicate.eu/openapi.json
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)