CJ Affiliate Link Search API

Publisher-side REST API for finding placeable advertiser links across the whole CJ network in one call - by keyword, sub-category, link type, promotion type and dates, language, targeted country, relationship status, deep-linking support and mobile flags. Returns link HTML and JavaScript, click and destination URLs, coupon codes and EPC, as XML. Also serves the Automated Offer Feed for financial advertisers. Publishers only, 25 calls per minute.

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/cj-affiliate-link-search-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

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

OpenAPI Specification

cj-affiliate-link-search-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: CJ Affiliate Link Search API
  version: '2026-08-13'
  description: 'CJ Affiliate''s published REST APIs, transcribed from CJ''s own developer documentation.
    Two families are covered:


    1. The classic XML lookup / search APIs on `*.api.cj.com` — Link Search, Advertiser Lookup, Publisher
    Lookup and the deprecated Commission Detail (Legacy). Each is documented with a stated call limit
    of 25 calls per minute and returns an `application/xml` `<cj-api>` document.


    2. The JSON click-tracking APIs — the Click Events API (`clicks.api.cj.com`) for partners and the
    Publisher Tracking API (`publishertracking.api.cj.com`) for publishers. Both accept a JSON body and
    return `{ destinationUrl, errorMessages }`.


    PROVENANCE: every path, parameter name, response field, status code and error message below was read
    on 2026-08-13 from CJ''s machine-readable documentation corpus, which the CJ Developer Portal single-page
    app loads from https://production-docs-assets.p.cjpowered.com/ (index at /index.yaml, one markdown
    file per page). Nothing here is modeled. CJ''s modern surface is GraphQL — see graphql/ in this repo
    for the three live schemas captured by introspection.'
  contact:
    name: API Evangelist
    email: kin@apievangelist.com
    url: https://developers.cj.com/
  x-source:
  - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Overview.md
  - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Link%20Search.md
  - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Advertiser%20Lookup.md
  - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Publisher%20Lookup.md
  - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Commission%20Detail%20(Legacy).md
  - https://production-docs-assets.p.cjpowered.com/REST%20APIs/Automated%20Offer%20Feed.md
  - https://production-docs-assets.p.cjpowered.com/Publisher%20Site%20Tracking/Click%20Events%20API.md
  - https://production-docs-assets.p.cjpowered.com/Publisher%20Site%20Tracking/Publisher%20Tracking%20API.md
servers:
- url: https://link-search.api.cj.com
  description: Link Search API (also serves the Automated Offer Feed)
security:
- personalAccessToken: []
tags:
- name: Link Search
  description: Publisher link discovery across the CJ network.
paths:
  /v2/link-search:
    get:
      tags:
      - Link Search
      operationId: linkSearch
      summary: Search advertiser links
      description: 'Find links across all advertisers in one call, filtered by keywords, category, link
        type, promotion type, relationship status, language, target country and more. All parameter names
        and values are case-insensitive. You must supply at least one optional parameter — an empty request
        returns zero results. Publishers only. Documented call limit: 25 calls per minute. The same endpoint
        serves the Automated Offer Feed for financial advertisers.'
      servers:
      - url: https://link-search.api.cj.com
      parameters:
      - name: website-id
        in: query
        description: Your Website ID / Property ID (PID). Enables the system to generate the appropriate
          link code in the response. Must match the Website PID used to register for the developer key.
        schema:
          type: string
      - name: advertiser-ids
        in: query
        description: Comma-separated advertiser CIDs, or `joined`, or `notjoined`. An empty string currently
          behaves the same as `notjoined`.
        schema:
          type: string
      - name: keywords
        in: query
        description: Restricts results by keywords found in the link's advertiser name, link name, description
          and advertiser-tagged search keywords. Supports simple boolean operators `+` and `-`; default
          logic is OR.
        schema:
          type: string
      - name: category
        in: query
        description: Comma-separated advertiser SUB-category. Top-level/parent categories are not searchable.
          See the enumerations page.
        schema:
          type: string
      - name: link-type
        in: query
        description: Limits results to a specific link type. Product links are not available here — use
          the Product Search API. See the enumerations page.
        schema:
          type: string
      - name: promotion-type
        in: query
        description: Promotion type. Required if using promotion-start-date or promotion-end-date.
        schema:
          type: string
          enum:
          - coupon
          - sweepstakes
          - product
          - sale/discount
          - free shipping
          - seasonal link
          - site to store
      - name: promotion-start-date
        in: query
        description: Promotion start date in MM/DD/YYYY format. Blank returns any start date.
        schema:
          type: string
      - name: promotion-end-date
        in: query
        description: Promotion end date in MM/DD/YYYY format, or the literal value `ongoing` for a promotion
          with no end date. Blank returns any end date.
        schema:
          type: string
      - name: page-number
        in: query
        description: Page of the result set to view. Defaults to 1.
        schema:
          type: integer
      - name: records-per-page
        in: query
        description: Number of records per page. Defaults to 100 for this API.
        schema:
          type: integer
      - name: language
        in: query
        description: Language the link was set at, using an accepted language code.
        schema:
          type: string
      - name: allow-deep-linking
        in: query
        description: Limit to links whose destination URL can be modified.
        schema:
          type: string
          enum:
          - 'true'
          - 'yes'
          - 'false'
      - name: event-name
        in: query
        description: The event or occurrence the link relates to. One event at a time.
        schema:
          type: string
      - name: link-Id
        in: query
        description: The AdId / Link ID of an individual link. One at a time. Only active links are returned;
          invalid, deleted or archived links return 0 results.
        schema:
          type: string
      - name: last-updated
        in: query
        description: Return links updated since this date, inclusive. MM/DD/YYYY format.
        schema:
          type: string
      - name: cross-device-only
        in: query
        description: Limit to links supporting cross-device tracking.
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - name: mobile-app-download
        in: query
        description: Limit to links that direct the user to an App Store download.
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - name: mobile-optimized
        in: query
        description: Limit to links the advertiser flagged as mobile-optimized.
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - name: targeted-country
        in: query
        description: Two-letter country code, one at a time. Appears as `targeted-countries` in the response.
        schema:
          type: string
      responses:
        '200':
          description: An XML `<cj-api><links>` document.
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/LinkSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  securitySchemes:
    personalAccessToken:
      type: http
      scheme: bearer
      description: 'A CJ Personal Access Token created at https://developers.cj.com/account/personal-access-tokens,
        sent as `Authorization: Bearer <token>`. CJ''s REST APIs also accept a legacy Developer Key in
        the same Authorization header.'
  responses:
    Unauthorized:
      description: 'HTTP 401 for all CJ REST APIs. Documented cases: no message at all (incorrect resource
        URL); "You must specify a developer key." (no developer key specified); "Not Authenticated: xxxxxx"
        (invalid developer key, echoing the key used). A request with no Authorization header returns
        `<cj-api><error-message>You must provide an Authorization header.</error-message></cj-api>`.'
      content:
        application/xml:
          schema:
            $ref: '#/components/schemas/CjApiError'
  schemas:
    CjApiError:
      type: object
      description: The `<cj-api>` XML envelope carrying an error message.
      properties:
        error-message:
          type: string
      xml:
        name: cj-api
    Link:
      type: object
      properties:
        ad-content:
          type: string
          description: Ad copy provided by the advertiser. Text links max 200 characters; Advanced and
            Content links up to 32,000 characters.
        advertiser-id:
          type: string
          description: The advertiser's CID.
        advertiser-name:
          type: string
        allow-deep-linking:
          type: string
        category:
          type: string
          description: The advertiser's sub/child category.
        click-commission:
          type: string
        clickUrl:
          type: string
          description: The CJ tracking URL.
        creative-height:
          type: string
        creative-width:
          type: string
        coupon-code:
          type: string
        cross-device-only:
          type: string
        description:
          type: string
        destination:
          type: string
        event-name:
          type: string
        language:
          type: string
        last-updated:
          type: string
        lead-commission:
          type: string
        link-code-html:
          type: string
        link-code-javascript:
          type: string
        link-id:
          type: string
        link-name:
          type: string
        link-type:
          type: string
        mobile-app-download:
          type: string
        mobile-optimized:
          type: string
        performance-incentive:
          type: string
        promotion-end-date:
          type: string
        promotion-start-date:
          type: string
        promotion-type:
          type: string
        relationship-status:
          type: string
        sale-commission:
          type: string
        seven-day-epc:
          type: string
        targeted-countries:
          type: string
        three-month-epc:
          type: string
    LinkSearchResponse:
      type: object
      description: The `<cj-api><links>` document.
      properties:
        links:
          type: object
          properties:
            total-matched:
              type: integer
              description: Total matching results in the index.
            records-returned:
              type: integer
              description: Records returned in this response. Defaults to 100 per page.
            page-number:
              type: integer
              description: Page number returned. Defaults to 1.
            link:
              type: array
              items:
                $ref: '#/components/schemas/Link'
      xml:
        name: cj-api