Outlets

Endpoints for listing and retrieving outlet details from the Presscart marketplace.

List outlets

GET /outlets

List outlet products from the marketplace.

Scope: outlets.lists

Description: Returns outlet products with nested outlet details, channels, tags, and pricing. Defaults to active outlets. API-token callers with pro pricing enabled receive all pricing tiers.

Search ranking: A filters[search] of 3 or more characters is ranked by relevance, the same way the Presscart marketplace ranks searches, so you can describe what you need (e.g. crypto news sites with do-follow links under $500) rather than name an outlet. Products are returned most relevant outlet first, and every product of an outlet shares that outlet's match_probability. Constraints the search text states clearly (do-follow, indexed, DA/DR, price, turnaround, AI-citable, a named disclaimer) are applied as filters and listed in search_constraints. Passing one of the sort_by fields below orders the matched products by that field instead of by relevance; any other sort_by is ignored. A shorter search, or a search the ranking can't answer, matches product and outlet names as before; search_mode tells you which was used.

A search filtered to a filters[status] the marketplace hides (ARCHIVED, REJECTED, SUSPENDED, INACTIVE, PENDING_VERIFICATION) always matches names (search_mode is name).

Note: Each record's id is the product ID. Use the outlet_id field when calling GET /outlets/{outlet_id} to retrieve outlet details.

Parameters

ParameterTypeDescription
limitnumberNumber of records per page (default: 25)
pagenumberPage number (default: 1)
sort_bystringField to sort by: name, created_at, domain_authority, domain_ranking (default: created_at)
order_bystringSort direction: asc or desc (default: desc)

Filters

Pass filters as query parameters using bracket notation, e.g. filters[search]=tech&filters[channel_type]=WEBSITE.

FilterTypeDescription
filters[search]stringSearch text: 3+ characters are ranked by relevance (see Search ranking above); shorter text matches product or outlet name
filters[status]stringOutlet status: ACTIVE, INACTIVE, DRAFT, PENDING_REVIEW, PENDING_AGREEMENT, REJECTED, ARCHIVED, SUSPENDED (default: ACTIVE)
filters[channel_type]stringFilter by channel type: WEBSITE, NEWSLETTER, INSTAGRAM, LINKEDIN, YOUTUBE, TIKTOK, TWITTER_X, PODCAST, OTHER
filters[placement_type]stringFilter by placement type: FULL_FEATURE, PRESS_RELEASE, MENTION, QUOTE, LISTICLE
filters[is_do_follow]booleanFilter by do-follow link status
filters[is_indexed]booleanFilter by indexed status
filters[disclaimer]stringFilter by disclaimer name (see List disclaimers)
filters[tags]string[]Filter by tag names (see List tags). Example: filters[tags][0]=Tech&filters[tags][1]=Finance
filters[country]stringFilter by country (Global outlets are always included)
filters[state]stringFilter by state
filters[city]stringFilter by city
filters[pricing][min]numberMinimum price
filters[pricing][max]numberMaximum price
filters[domain_authority][min]numberMinimum domain authority
filters[domain_authority][max]numberMaximum domain authority
filters[domain_ranking][min]numberMinimum domain ranking
filters[domain_ranking][max]numberMaximum domain ranking
filters[turnaround_time][min]numberMinimum turnaround time (days)
filters[turnaround_time][max]numberMaximum turnaround time (days)
filters[most_popular]booleanWhen true, return records sorted by most ordered
filters[new_last_30_days]booleanWhen true, only return records created within the last 30 days, sorted by newest first

Request

curl "https://api.presscart.com/outlets?limit=10&page=1&filters[search]=tech&filters[channel_type]=WEBSITE" \
  -H "Authorization: Bearer $PRESSCART_API_TOKEN"

Response

{
  "records": [
    {
      "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "outlet_id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
      "name": "Premium Tech Feature",
      "description": "Full-length feature article on a leading tech publication",
      "requirements": "Must include company background and product details",
      "min_delivery_days": 5,
      "max_delivery_days": 14,
      "is_featured": false,
      "created_at": "2025-01-15T10:30:00.000Z",
      "outlet_name": "TechDaily",
      "website_url": "https://techdaily.com",
      "logo": "https://cdn.presscart.com/logos/techdaily.png",
      "city": "San Francisco",
      "state": "CA",
      "country": "US",
      "channels": [
        {
          "channel_type": "WEBSITE",
          "placement_type": "FULL_FEATURE",
          "is_do_follow": true,
          "domain_authority": 72,
          "domain_ranking": 65,
          "disclaimer_name": "Sponsored",
          "disclaimer_description": "This is a sponsored post"
        }
      ],
      "tags": [{ "name": "Technology" }, { "name": "Startups" }],
      "prices": [
        {
          "unit_amount": 1500,
          "currency": "usd",
          "pricing_tier": "basic"
        }
      ],
      "match_probability": 0.92
    }
  ],
  "total_records": 150,
  "total_pages": 15,
  "current_page": 1,
  "next_page": 2,
  "previous_page": null,
  "search_mode": "jev",
  "search_constraints": ["Do-follow"]
}
FieldTypeDescription
records[].match_probabilitynumber | nullRelevance of the product's outlet to the search, from 0 to 1. null unless search_mode is jev.
search_modestring | nulljev when the search was ranked by relevance, name when it matched names, null when there was no search.
search_constraintsstring[]Present only when the search text stated constraints that were applied as filters, e.g. Do-follow, Under $500.

Get outlet

GET /outlets/{outlet_id}

Retrieve a single outlet by ID.

Scope: outlets.read

Description: Returns the full outlet details. Internal pricing fields are removed for API-token callers.

Path parameters

ParameterTypeDescription
outlet_idstringUUID of the outlet

Request

curl "https://api.presscart.com/outlets/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" \
  -H "Authorization: Bearer $PRESSCART_API_TOKEN"

Response

{
  "id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
  "name": "TechDaily",
  "description": "A leading technology news publication",
  "website_url": "https://techdaily.com",
  "logo": "https://cdn.presscart.com/logos/techdaily.png",
  "country": "US",
  "state": "CA",
  "city": "San Francisco",
  "is_indexed": true,
  "tags": [{ "name": "Technology" }, { "name": "Startups" }],
  "outlet_channels": [
    {
      "id": "cccccccc-cccc-cccc-cccc-cccccccccccc",
      "outlet_id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
      "channel_type": "WEBSITE",
      "placement_type": "FULL_FEATURE",
      "channel_handle": null,
      "channel_url": "https://techdaily.com",
      "social_links": [],
      "is_do_follow": true,
      "domain_authority": 72,
      "domain_ranking": 65,
      "do_follow_links_allowed": null,
      "disclaimer_name": "Sponsored",
      "disclaimer_description": "This is a sponsored post"
    }
  ],
  "created_at": "2025-01-15T10:30:00.000Z",
  "updated_at": "2025-03-10T08:00:00.000Z"
}

List outlet products

GET /outlets/{outlet_id}/products

Retrieve a paginated list of products for a specific outlet.

Scope: outlets.read

Description: Returns products belonging to the specified outlet, with nested channels, tags, and pricing. Supports the same filters and sorting as GET /outlets.

Path parameters

ParameterTypeDescription
outlet_idstringUUID of the outlet

Parameters

ParameterTypeDescription
limitnumberNumber of records per page (default: 25)
pagenumberPage number (default: 1)
sort_bystringField to sort by: name, created_at, domain_authority, domain_ranking (default: created_at)
order_bystringSort direction: asc or desc (default: desc)

Filters are the same as List outlets — see the filters table above.

Request

curl "https://api.presscart.com/outlets/bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb/products?limit=10&page=1" \
  -H "Authorization: Bearer $PRESSCART_API_TOKEN"

Response

{
  "records": [
    {
      "id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "outlet_id": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
      "name": "Premium Tech Feature",
      "description": "Full-length feature article on a leading tech publication",
      "requirements": "Must include company background and product details",
      "min_delivery_days": 5,
      "max_delivery_days": 14,
      "is_featured": false,
      "created_at": "2025-01-15T10:30:00.000Z",
      "outlet_name": "TechDaily",
      "website_url": "https://techdaily.com",
      "logo": "https://cdn.presscart.com/logos/techdaily.png",
      "city": "San Francisco",
      "state": "CA",
      "country": "US",
      "channels": [
        {
          "channel_type": "WEBSITE",
          "placement_type": "FULL_FEATURE",
          "is_do_follow": true,
          "domain_authority": 72,
          "domain_ranking": 65,
          "disclaimer_name": "Sponsored",
          "disclaimer_description": "This is a sponsored post"
        }
      ],
      "tags": [{ "name": "Technology" }, { "name": "Startups" }],
      "prices": [
        {
          "unit_amount": 1500,
          "currency": "usd",
          "pricing_tier": "basic"
        }
      ]
    }
  ],
  "total_records": 3,
  "total_pages": 1,
  "current_page": 1,
  "next_page": null,
  "previous_page": null
}

List countries

GET /outlets/locations/countries

Scope: outlets.read

Returns distinct countries where outlets are located. Optionally filter by country name.

Parameters

ParameterTypeRequiredDescription
countrystringNoFilter by country (e.g. United States)

Request

curl "https://api.presscart.com/outlets/locations/countries" \
  -H "Authorization: Bearer $PRESSCART_API_TOKEN"

Response

{
  "countries": ["Australia", "Canada", "Philippines", "Spain", "United Kingdom", "United States"]
}

List states

GET /outlets/locations/states

Scope: outlets.read

Returns distinct states. Optionally filter by country.

Parameters

ParameterTypeRequiredDescription
countrystringNoFilter by country (e.g. United States)

Request

curl "https://api.presscart.com/outlets/locations/states?country=United%20States" \
  -H "Authorization: Bearer $PRESSCART_API_TOKEN"

Response

{
  "states": ["California", "Florida", "New York", "Texas"]
}

List cities

GET /outlets/locations/cities

Scope: outlets.read

Returns distinct cities. Optionally filter by country and/or state.

Parameters

ParameterTypeRequiredDescription
countrystringNoFilter by country (e.g. United States)
statestringNoFilter by state (e.g. California)

Request

curl "https://api.presscart.com/outlets/locations/cities?country=United%20States&state=California" \
  -H "Authorization: Bearer $PRESSCART_API_TOKEN"

Response

{
  "cities": ["Los Angeles", "San Diego", "San Francisco", "San Jose"]
}

List tags

GET /tags

Scope: tags.lists

Returns a list of tag names. Use these values in the filters[tags] parameter when calling List outlets or List product listings.

Parameters

ParameterTypeDescription
limitnumberRecords per page (default: 25)
pagenumberPage number

Filters

FilterTypeDescription
filters[search]stringSearch by tag name
filters[category]stringFilter by category: TOPIC, AUDIENCE, LOCATION, ROLE, COMPANY_SIZE
filters[fetch_all]stringSet to true to return all tags without pagination

Request

curl "https://api.presscart.com/tags?filters[category]=TOPIC" \
  -H "Authorization: Bearer $PRESSCART_API_TOKEN"

Response

{
  "records": [
    { "name": "Technology" },
    { "name": "Finance" },
    { "name": "Healthcare" }
  ],
  "total_records": 42,
  "total_pages": 2,
  "current_page": 1,
  "next_page": 2,
  "previous_page": null
}

List disclaimers

GET /outlet-disclaimers

Scope: outlet_disclaimers.lists

Returns a list of disclaimers with their names and descriptions. Use the name values in the filters[disclaimer] parameter when calling List outlets, or in filters[disclaimer_ids] when calling List product listings.

Parameters

ParameterTypeDescription
limitnumberRecords per page (default: 25)
pagenumberPage number

Filters

FilterTypeDescription
filters[fetch_all]stringSet to true to return all disclaimers without pagination

Request

curl "https://api.presscart.com/outlet-disclaimers?filters[fetch_all]=true" \
  -H "Authorization: Bearer $PRESSCART_API_TOKEN"

Response

{
  "records": [
    {
      "id": "dddddddd-dddd-dddd-dddd-dddddddddddd",
      "name": "Sponsored",
      "description": "This is a sponsored post"
    },
    {
      "id": "eeeeeeee-eeee-eeee-eeee-eeeeeeeeeeee",
      "name": "Advertorial",
      "description": "Paid promotional content"
    }
  ],
  "total_records": 5,
  "total_pages": 1,
  "current_page": 1,
  "next_page": null,
  "previous_page": null
}

On this page