LoudCrowd Product Data API

The Product Data API from LoudCrowd — 1 operation(s) for product data.

Operations 1

POST /product-data Send Product Data #

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/loudcrowd-product-data-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

loudcrowd-product-data-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: LoudCrowd Product Data API
  version: 0.0.0
  description: 'LoudCrowd public API definitions, including the account-scoped Brand API and Attribution Events API.

    '
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://store-api.loudcrowd.com/api
  description: LoudCrowd Creator Storefronts API
- url: https://api.loudcrowd.com
  description: LoudCrowd Attribution Events API
security:
- bearerAuth: []
tags:
- name: Product Data
paths:
  /product-data:
    post:
      summary: Send Product Data
      description: Batch upsert or delete product catalog records in LoudCrowd. Aligns with the supported file formats documented in the LoudCrowd developer docs. This API is designed to mirror the ingestion pipeline currently used for file-based product loads so that existing mappings can be reused.
      operationId: send_product_data
      parameters:
      - in: header
        name: X-LC-SHOP-ID
        description: Your LoudCrowd internal shop identifier
        required: true
        schema:
          type: string
      - in: header
        name: X-Signature
        description: The SHA-256 hexadecimal digest of the UTF-8 encoded JSON payload
        required: true
        schema:
          type: string
      - in: header
        name: X-LC-TOPIC
        description: Specifies the operation to apply to the provided products
        required: true
        schema:
          type: string
          enum:
          - PRODUCT_UPSERT
          - PRODUCT_DELETE
      - in: header
        name: Content-Type
        description: Content type of the request
        required: true
        schema:
          type: string
          default: application/json
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/sendProductDataRequest'
      responses:
        '200':
          description: Request accepted and processed
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Product data processed
                  processedCount:
                    type: integer
                    example: 123
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '422':
          $ref: '#/components/responses/422'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
      tags:
      - Product Data
components:
  schemas:
    productPrices:
      properties:
        discountedPriceRanges:
          description: List of the discounted price ranges for the product.
          items:
            properties:
              discount:
                properties:
                  id:
                    type: string
                type: object
              range:
                properties:
                  max:
                    type: number
                  min:
                    type: number
                type: object
            type: object
          type: array
          maxItems: 10
        discountedPrices:
          description: List of the discounted prices for the product.
          items:
            properties:
              discount:
                properties:
                  id:
                    type: string
                type: object
              price:
                type: number
            type: object
          type: array
          maxItems: 10
        price:
          description: The price of the product.
          type:
          - number
          - 'null'
        priceRange:
          description: The price range of the product.
          properties:
            max:
              type: number
            min:
              type: number
          type:
          - object
          - 'null'
        promotionalPrice:
          description: If there is a site wide promotion applied to the product data, the promotional price of the product.
          type:
          - number
          - 'null'
        promotionalPriceRange:
          description: If there is a site wide promotion applied to the product data, the promotional price range of the product.
          properties:
            max:
              type: number
            min:
              type: number
          type:
          - object
          - 'null'
        salePrice:
          description: The sale price of the product.
          type:
          - number
          - 'null'
        salePriceRange:
          description: The sale price range of the product.
          properties:
            max:
              type: number
            min:
              type: number
          type:
          - object
          - 'null'
      type:
      - object
      - 'null'
    sendProductDataRequest:
      type: object
      required:
      - products
      properties:
        products:
          type: array
          description: Batch of product records to upsert or delete.
          minItems: 1
          maxItems: 1000
          items:
            $ref: '#/components/schemas/productIngestRecord'
    productVariantIngestRecord:
      type: object
      required:
      - variant_sku
      properties:
        variant_sku:
          type: string
          description: Variant SKU (acts as external key)
        price:
          type:
          - number
          - 'null'
          description: Variant price
        sale_price:
          type:
          - number
          - 'null'
          description: Variant sale price
        product_url:
          type:
          - string
          - 'null'
          description: Variant PDP URL
        selected_options:
          type:
          - array
          - 'null'
          description: Key/value option selections like Size/Color
          items:
            $ref: '#/components/schemas/selectedOptionItem'
          maxItems: 100
    priceCurrencyCode:
      enum:
      - USD
      - CAD
      - GBP
      - AUD
      - AED
      - AFN
      - ALL
      - AMD
      - ANG
      - AOA
      - ARS
      - AWG
      - AZN
      - BAM
      - BBD
      - BDT
      - BGN
      - BHD
      - BIF
      - BMD
      - BND
      - BOB
      - BOV
      - BRL
      - BSD
      - BTN
      - BWP
      - BYN
      - BZD
      - CDF
      - CHE
      - CHF
      - CHW
      - CLF
      - CLP
      - CNY
      - COP
      - COU
      - CRC
      - CUC
      - CUP
      - CVE
      - CZK
      - DJF
      - DKK
      - DOP
      - DZD
      - EGP
      - ERN
      - ETB
      - EUR
      - FJD
      - FKP
      - GEL
      - GHS
      - GIP
      - GMD
      - GNF
      - GTQ
      - GYD
      - HKD
      - HNL
      - HRK
      - HTG
      - HUF
      - IDR
      - ILS
      - INR
      - IQD
      - IRR
      - ISK
      - JMD
      - JOD
      - JPY
      - KES
      - KGS
      - KHR
      - KMF
      - KPW
      - KRW
      - KWD
      - KYD
      - KZT
      - LAK
      - LBP
      - LKR
      - LRD
      - LSL
      - LYD
      - MAD
      - MDL
      - MGA
      - MKD
      - MMK
      - MNT
      - MOP
      - MRU
      - MUR
      - MVR
      - MWK
      - MXN
      - MXV
      - MYR
      - MZN
      - NAD
      - NGN
      - NIO
      - NOK
      - NPR
      - NZD
      - OMR
      - PAB
      - PEN
      - PGK
      - PHP
      - PKR
      - PLN
      - PYG
      - QAR
      - RON
      - RSD
      - RUB
      - RWF
      - SAR
      - SBD
      - SCR
      - SDG
      - SEK
      - SGD
      - SHP
      - SLE
      - SLL
      - SOS
      - SRD
      - SSP
      - STN
      - SVC
      - SYP
      - SZL
      - THB
      - TJS
      - TMT
      - TND
      - TOP
      - TRY
      - TTD
      - TWD
      - TZS
      - UAH
      - UGX
      - USN
      - UYI
      - UYU
      - UYW
      - UZS
      - VED
      - VES
      - VND
      - VUV
      - WST
      - XAF
      - XAG
      - XAU
      - XBA
      - XBB
      - XBC
      - XBD
      - XCD
      - XDR
      - XOF
      - XPD
      - XPF
      - XPT
      - XSU
      - XTS
      - XUA
      - XXX
      - YER
      - ZAR
      - ZMW
      - ZWL
      type:
      - string
      - 'null'
      description: The currency code of the product prices.
      example: USD
    selectedOptionItem:
      properties:
        name:
          description: The name of the selected option.
          type:
          - string
          - 'null'
          example: Color
        value:
          description: The value of the selected option.
          type:
          - string
          - 'null'
          example: Red
      type: object
    productIngestRecord:
      type: object
      description: Product payload aligned with file-based ingestion formats. Use nulls for clearing optional values.
      required:
      - platform_product_id
      - title
      properties:
        platform_product_id:
          type: string
          description: Unique product identifier from the eCommerce platform
        handle:
          type: string
          description: Product handle or slug
        title:
          type: string
          description: Product title
        brand:
          type:
          - string
          - 'null'
          description: Brand name
        image_src:
          type:
          - string
          - 'null'
          description: Primary product image URL
        product_url:
          type:
          - string
          - 'null'
          description: Product PDP URL
        active:
          type: boolean
          description: Whether product is active/available
        in_stock:
          type:
          - boolean
          - 'null'
          description: Inventory availability flag
        price_currency_code:
          $ref: '#/components/schemas/priceCurrencyCode'
        prices:
          $ref: '#/components/schemas/productPrices'
        promotional_code:
          type:
          - string
          - 'null'
          description: Applied sitewide promo code, if any
        collections:
          type:
          - array
          - 'null'
          description: Optional list of collection identifiers the product belongs to
          items:
            type: string
          maxItems: 250
        tags:
          type:
          - array
          - 'null'
          description: Optional list of product tags
          items:
            type: string
          maxItems: 250
        variants:
          type:
          - array
          - 'null'
          description: Optional list of product variants
          items:
            $ref: '#/components/schemas/productVariantIngestRecord'
          maxItems: 250
  responses:
    '429':
      description: You hit the rate limit for this account. All endpoints share the same rate limit for an account.
      headers:
        X-RateLimit-Limit:
          schema:
            type: integer
          description: Total requests allowed in the current window
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: Requests remaining in the current window
        X-RateLimit-Reset:
          schema:
            type: integer
          description: Unix epoch seconds when the current window resets
        Retry-After:
          schema:
            type: integer
          description: Seconds until the next request may be made
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
                example: 429
              message:
                type: string
                example: Rate Limit Exceeded
    '400':
      description: Request is missing or has a bad parameter.
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
                example: 400
              message:
                type: string
                example: Bad Request
    '500':
      description: Something is wrong on LoudCrowd's end.
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
                example: 500
              message:
                type: string
                example: Server Error
    '401':
      description: Key is valid, but the account does not have permissions to perform this action.
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
                example: 401
              message:
                type: string
                example: Not Authorized
    '422':
      description: Validation failed for one or more product records.
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: integer
                example: 422
              message:
                type: string
                example: Unprocessable Entity
              recordErrors:
                type: array
                description: Per-record validation errors
                items:
                  type: object
                  properties:
                    index:
                      type: integer
                      description: Zero-based index of the product in the payload
                      example: 0
                    field:
                      type: string
                      description: JSON pointer or field path
                      example: products[0].platform_product_id
                    code:
                      type: string
                      description: Machine-readable error code
                      example: REQUIRED
                    message:
                      type: string
                      description: Human readable error
                      example: platform_product_id is required
                  required:
                  - index
                  - code
                  - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Authorization header using the Bearer scheme. Example: "Authorization: Bearer {token}"'
    accountKeyAuth:
      type: apiKey
      in: header
      name: X-LC-Account-Key
      description: API token created in LoudCrowd.
      x-default: YOUR_API_TOKEN
x-readme:
  explorer-enabled: false