Skip to main content
POST
/
products
/
search
Products Search
curl --request POST \
  --url https://api-v2.production.higg.org/pic-api/v1/products/search \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --header 'x-developer-request-token: <api-key>' \
  --data '
{
  "id": [
    "<string>"
  ],
  "name": [
    "<string>"
  ],
  "textSearch": [
    "<string>"
  ],
  "from": 123,
  "size": 123,
  "productSize": [
    "<string>"
  ],
  "productCategory": [
    "<string>"
  ],
  "component": [
    "<string>"
  ],
  "material": [
    "<string>"
  ],
  "packaging": [
    "<string>"
  ],
  "tag": [
    "<string>"
  ],
  "identifier": [
    "<string>"
  ],
  "hasFrenchEcoScore": true,
  "publishEligibleOnly": true
}
'
import requests

url = "https://api-v2.production.higg.org/pic-api/v1/products/search"

payload = {
"id": ["<string>"],
"name": ["<string>"],
"textSearch": ["<string>"],
"from": 123,
"size": 123,
"productSize": ["<string>"],
"productCategory": ["<string>"],
"component": ["<string>"],
"material": ["<string>"],
"packaging": ["<string>"],
"tag": ["<string>"],
"identifier": ["<string>"],
"hasFrenchEcoScore": True,
"publishEligibleOnly": True
}
headers = {
"x-api-key": "<api-key>",
"x-developer-request-token": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {
'x-api-key': '<api-key>',
'x-developer-request-token': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
id: ['<string>'],
name: ['<string>'],
textSearch: ['<string>'],
from: 123,
size: 123,
productSize: ['<string>'],
productCategory: ['<string>'],
component: ['<string>'],
material: ['<string>'],
packaging: ['<string>'],
tag: ['<string>'],
identifier: ['<string>'],
hasFrenchEcoScore: true,
publishEligibleOnly: true
})
};

fetch('https://api-v2.production.higg.org/pic-api/v1/products/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api-v2.production.higg.org/pic-api/v1/products/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'id' => [
'<string>'
],
'name' => [
'<string>'
],
'textSearch' => [
'<string>'
],
'from' => 123,
'size' => 123,
'productSize' => [
'<string>'
],
'productCategory' => [
'<string>'
],
'component' => [
'<string>'
],
'material' => [
'<string>'
],
'packaging' => [
'<string>'
],
'tag' => [
'<string>'
],
'identifier' => [
'<string>'
],
'hasFrenchEcoScore' => true,
'publishEligibleOnly' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <api-key>",
"x-developer-request-token: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api-v2.production.higg.org/pic-api/v1/products/search"

payload := strings.NewReader("{\n \"id\": [\n \"<string>\"\n ],\n \"name\": [\n \"<string>\"\n ],\n \"textSearch\": [\n \"<string>\"\n ],\n \"from\": 123,\n \"size\": 123,\n \"productSize\": [\n \"<string>\"\n ],\n \"productCategory\": [\n \"<string>\"\n ],\n \"component\": [\n \"<string>\"\n ],\n \"material\": [\n \"<string>\"\n ],\n \"packaging\": [\n \"<string>\"\n ],\n \"tag\": [\n \"<string>\"\n ],\n \"identifier\": [\n \"<string>\"\n ],\n \"hasFrenchEcoScore\": true,\n \"publishEligibleOnly\": true\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-developer-request-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api-v2.production.higg.org/pic-api/v1/products/search")
.header("x-api-key", "<api-key>")
.header("x-developer-request-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"id\": [\n \"<string>\"\n ],\n \"name\": [\n \"<string>\"\n ],\n \"textSearch\": [\n \"<string>\"\n ],\n \"from\": 123,\n \"size\": 123,\n \"productSize\": [\n \"<string>\"\n ],\n \"productCategory\": [\n \"<string>\"\n ],\n \"component\": [\n \"<string>\"\n ],\n \"material\": [\n \"<string>\"\n ],\n \"packaging\": [\n \"<string>\"\n ],\n \"tag\": [\n \"<string>\"\n ],\n \"identifier\": [\n \"<string>\"\n ],\n \"hasFrenchEcoScore\": true,\n \"publishEligibleOnly\": true\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api-v2.production.higg.org/pic-api/v1/products/search")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["x-developer-request-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": [\n \"<string>\"\n ],\n \"name\": [\n \"<string>\"\n ],\n \"textSearch\": [\n \"<string>\"\n ],\n \"from\": 123,\n \"size\": 123,\n \"productSize\": [\n \"<string>\"\n ],\n \"productCategory\": [\n \"<string>\"\n ],\n \"component\": [\n \"<string>\"\n ],\n \"material\": [\n \"<string>\"\n ],\n \"packaging\": [\n \"<string>\"\n ],\n \"tag\": [\n \"<string>\"\n ],\n \"identifier\": [\n \"<string>\"\n ],\n \"hasFrenchEcoScore\": true,\n \"publishEligibleOnly\": true\n}"

response = http.request(request)
puts response.read_body
{
  "from": 123,
  "size": 123,
  "total": 123,
  "results": [
    {
      "_id": "<string>",
      "name": "<string>",
      "weightInformation": {
        "convertedToKg": 123,
        "weight": 123,
        "isPrimaryData": true
      },
      "type": "<string>",
      "createdOn": {},
      "user": {
        "_id": "<string>",
        "email": "<string>",
        "firstname": "<string>",
        "lastname": "<string>"
      },
      "account": {
        "_id": "<string>",
        "name": "<string>",
        "country": "<string>",
        "sacId": 123,
        "oar_id": "<string>",
        "demoaccount": true,
        "socialCreditId": "<string>",
        "taxId": "<string>",
        "bluesignId": "<string>",
        "zdhcId": "<string>",
        "ipeViolation": {
          "totalViolations": 123
        },
        "ffcId": 123
      },
      "materials": [
        {
          "name": "<string>",
          "netUse": 123,
          "materialId": "<string>",
          "composition": 123,
          "weightInformation": {
            "convertedToKg": 123,
            "weight": 123,
            "netWeight": 123
          },
          "isMsiMaterial": true,
          "isPicMaterialLibrary": true,
          "code": "<string>",
          "dataSource": "<string>",
          "isOutdated": true,
          "description": "<string>",
          "impacts": {
            "tier4Impact": 123,
            "tier2and3Impact": 123,
            "totalMaterialLibrary": 123,
            "totalTierImpact": 123,
            "uncertainty": {
              "lower": 123,
              "upper": 123
            }
          }
        }
      ],
      "materialImpact": 123,
      "tier1Impact": 123,
      "packagingImpact": 123,
      "logisticsImpactsUpstreamTD": 123,
      "logisticsImpactsDTImpact": 123,
      "logisticsImpactsDCImpact": 123,
      "logisticsImpactsRetailImpact": 123,
      "productCareImpacts": 123,
      "endOfUseImpact": 123,
      "_rev": "<string>",
      "version": "<string>",
      "productType": "<string>",
      "productCategory": "<string>",
      "packagingWeight": {
        "convertedToKg": 123,
        "weight": 123,
        "isPrimaryData": true
      },
      "modelNumber": "<string>",
      "barcodes": [
        "<string>"
      ],
      "dataSource": "<string>",
      "modifiedOn": {},
      "deleted": true,
      "modifiedBy": {
        "_id": "<string>",
        "email": "<string>",
        "firstname": "<string>",
        "lastname": "<string>"
      },
      "deletedBy": {
        "_id": "<string>",
        "email": "<string>",
        "firstname": "<string>",
        "lastname": "<string>"
      },
      "defaultProduct": {
        "defaultProductId": "<string>",
        "name": "<string>"
      },
      "components": [
        {
          "name": "<string>",
          "componentId": "<string>",
          "unit": 123,
          "weightInformation": {
            "convertedToKg": 123,
            "weight": 123,
            "isPrimaryData": true
          },
          "isMsiComponent": true,
          "isOutdated": true,
          "dataSource": "<string>",
          "description": "<string>",
          "impacts": {
            "tier4Impact": 123,
            "tier2and3Impact": 123,
            "totalMaterialLibrary": 123,
            "totalTierImpact": 123,
            "uncertainty": {
              "lower": 123,
              "upper": 123
            }
          }
        }
      ],
      "packaging": [
        {
          "packagingId": "<string>",
          "amount": 123,
          "name": "<string>",
          "weightInformation": {
            "convertedToKg": 123,
            "weight": 123,
            "isPrimaryData": true
          },
          "isMsiPackaging": true,
          "isOutdated": true,
          "code": "<string>",
          "dataSource": "<string>",
          "description": "<string>",
          "impacts": {
            "tier4Impact": 123,
            "tier2and3Impact": 123,
            "totalMaterialLibrary": 123,
            "totalTierImpact": 123,
            "uncertainty": {
              "lower": 123,
              "upper": 123
            }
          }
        }
      ],
      "notes": "<string>",
      "purchaseOrder": [
        {
          "_id": "<string>",
          "assembly": {
            "isDefault": true,
            "femId": "<string>",
            "facilityName": "<string>",
            "finalAssemblyRawText": "<string>",
            "surveyVersion": "<string>",
            "finalAssemblyImpacts": 123,
            "printingProductDyeingImpacts": 123,
            "totalNormalizedImpacts": 123,
            "sipfacilitytype": [
              "<string>"
            ],
            "annualProd": "<string>",
            "country": "<string>",
            "femDescriptor": "<string>",
            "year": 123,
            "finishedProductImpacts": 123
          },
          "purchaseOrderId": "<string>",
          "purchaseDate": 123,
          "impactPerUnit": 123,
          "totalImpactPerUnit": 123,
          "pmVersion": "<string>",
          "msiVersion": "<string>",
          "version": "<string>",
          "amountPurchase": 123,
          "isOutdated": true,
          "impactsPerUnitMultiPack": {
            "materialImpact": 123,
            "tier1Impact": 123,
            "packagingImpact": 123,
            "logisticsImpactsUpstreamTD": 123,
            "logisticsImpactsDTImpact": 123,
            "logisticsImpactsDCImpact": 123,
            "logisticsImpactsRetailImpact": 123,
            "productCareImpacts": 123,
            "endOfUseImpact": 123,
            "totalProductImpacts": 123,
            "componentImpact": 123
          },
          "totalImpactsMultiPack": {
            "materialImpact": 123,
            "tier1Impact": 123,
            "packagingImpact": 123,
            "logisticsImpactsUpstreamTD": 123,
            "logisticsImpactsDTImpact": 123,
            "logisticsImpactsDCImpact": 123,
            "logisticsImpactsRetailImpact": 123,
            "productCareImpacts": 123,
            "endOfUseImpact": 123,
            "totalProductImpacts": 123,
            "componentImpact": 123
          },
          "impactsPerUnit": {
            "materialImpact": 123,
            "tier1Impact": 123,
            "packagingImpact": 123,
            "logisticsImpactsUpstreamTD": 123,
            "logisticsImpactsDTImpact": 123,
            "logisticsImpactsDCImpact": 123,
            "logisticsImpactsRetailImpact": 123,
            "productCareImpacts": 123,
            "endOfUseImpact": 123,
            "totalProductImpacts": 123,
            "componentImpact": 123
          },
          "totalImpacts": {
            "materialImpact": 123,
            "tier1Impact": 123,
            "packagingImpact": 123,
            "logisticsImpactsUpstreamTD": 123,
            "logisticsImpactsDTImpact": 123,
            "logisticsImpactsDCImpact": 123,
            "logisticsImpactsRetailImpact": 123,
            "productCareImpacts": 123,
            "endOfUseImpact": 123,
            "totalProductImpacts": 123,
            "componentImpact": 123
          }
        }
      ],
      "purchaseOrderImpactsTotal": {
        "materialImpact": 123,
        "tier1Impact": 123,
        "packagingImpact": 123,
        "logisticsImpactsUpstreamTD": 123,
        "logisticsImpactsDTImpact": 123,
        "logisticsImpactsDCImpact": 123,
        "logisticsImpactsRetailImpact": 123,
        "productCareImpacts": 123,
        "endOfUseImpact": 123,
        "totalProductImpacts": 123,
        "componentImpact": 123
      },
      "componentImpact": 123,
      "upstreamTransportation": 123,
      "downstreamTransportationRetail": 123,
      "downstreamTransportationConsumer": 123,
      "distributionCenterUnOwned": 123,
      "retailEnergyUnOwned": 123,
      "frenchLabelManufacturingCountry": {
        "code": "<string>",
        "name": "<string>"
      },
      "frenchLabelFabricCountry": {
        "code": "<string>",
        "name": "<string>"
      },
      "frenchLabelDyeingCountry": {
        "code": "<string>",
        "name": "<string>"
      },
      "frenchLabelOptionalFields": {
        "countrySpinning": {
          "code": "<string>",
          "name": "<string>"
        },
        "upcycled": true,
        "price": 123,
        "numberOfReferences": 123
      },
      "frenchLabelEligibility": {
        "eligible": true,
        "reasons": [
          {
            "message": "<string>"
          }
        ]
      },
      "frenchLabelEcoScore": {
        "score": 123,
        "impacts": {
          "acd": 123,
          "cch": 123,
          "etf": 123,
          "etfC": 123,
          "fru": 123,
          "fwe": 123,
          "htc": 123,
          "htcC": 123,
          "htn": 123,
          "htnC": 123,
          "ior": 123,
          "ldu": 123,
          "mru": 123,
          "ozd": 123,
          "pco": 123,
          "pma": 123,
          "swe": 123,
          "tre": 123,
          "wtu": 123,
          "ecs": 123,
          "pef": 123,
          "microfibers": 123,
          "outOfEuropeEOL": 123
        },
        "createdAt": 123,
        "updatedAt": 123,
        "impactsPercentageContribution": {
          "acd": 123,
          "cch": 123,
          "etf": 123,
          "etfC": 123,
          "fru": 123,
          "fwe": 123,
          "htc": 123,
          "htcC": 123,
          "htn": 123,
          "htnC": 123,
          "ior": 123,
          "ldu": 123,
          "mru": 123,
          "ozd": 123,
          "pco": 123,
          "pma": 123,
          "swe": 123,
          "tre": 123,
          "wtu": 123,
          "ecs": 123,
          "pef": 123,
          "microfibers": 123,
          "outOfEuropeEOL": 123
        },
        "apiVersion": "<string>",
        "apiResponseError": "<string>",
        "complementsImpacts": {
          "microfibers": 123,
          "outOfEuropeEOL": 123,
          "cropDiversity": 123,
          "forest": 123,
          "hedges": 123,
          "livestockDensity": 123,
          "permanentPasture": 123,
          "plotSize": 123
        },
        "publishEligibility": {
          "eligible": true,
          "reasons": [
            "<string>"
          ]
        },
        "publish": {
          "publishedAt": 123,
          "publishedBy": "<string>",
          "filedScore": 123,
          "internalReference": "<string>",
          "nextEligibleAt": 123,
          "attemptedAt": 123,
          "attemptedBy": "<string>",
          "apiResponseError": "<string>"
        }
      },
      "identifier": "<string>",
      "tags": [
        "<string>"
      ]
    }
  ]
}
Use this endpoint to filter and find products within your account. You can search by name, category, materials, or French Eco-Score status.

Request body properties

Set to true to return only products that have a French Eco-Score calculation.
Controls pagination. from specifies the starting index (default 0), and size specifies the number of results to return (default 50).
NameTypeDescription
idArray<string>Filter by specific product IDs.
nameArray<string>Filter by product names.
textSearchArray<string>General text search across multiple fields.
productSizeArray<string>Filter by product sizes.
productCategoryArray<string>Filter by product categories.
componentArray<string>Filter by component IDs or names.
materialArray<string>Filter by material IDs or names.
packagingArray<string>Filter by packaging IDs or names.
tagArray<string>Filter by tags.
identifierArray<string>Filter by product identifiers (e.g., SKU).
hasFrenchEcoScorebooleanFilter products that have a French Eco-Score calculated.
fromnumber[DEFAULT: 0] Pagination start index.
sizenumber[DEFAULT: 50] Number of results to return.
sortobjectSorting configuration { field: string, order: "asc" | "desc" }.

Response body properties

The search result includes a results array containing product details.
This property is located within purchaseOrder[].assembly and provides the environmental impact specifically for the finished product assembly.

Implementation details

  • Pagination: Use from and size for large result sets. The response includes a total field to help you calculate the number of pages.
  • Filtering logic: Most array fields (like name or material) act as “OR” filters. A product is returned if it matches any of the provided values in the array.
  • French Eco-Score: Use the hasFrenchEcoScore filter to identify products eligible for French environmental labeling.

PIC - Retrieve French Eco-Score

PIC - Create a Product

PIC - Create a Purchase Order

Check the PIC Data Dictionary for detailed definitions of product and impact fields.

Authorizations

x-api-key
string
header
required
x-developer-request-token
string
header
required

Body

application/json
id
string[] | null
name
string[] | null
sort
object

API Search requests

textSearch
string[] | null
from
number<double> | null
size
number<double> | null
productSize
string[] | null
productCategory
string[] | null
component
string[] | null
material
string[] | null
packaging
string[] | null
tag
string[] | null
identifier
string[] | null
hasFrenchEcoScore
boolean | null
publishEligibleOnly
boolean | null

Opt-in only. When true the search restricts results to products eligible to publish to the French Eco-Score declaration portal right now. Omit (or pass false) to skip the filter — both behave identically. Silently ignored for accounts without the publish feature enabled.

Response

200 - application/json

Ok

API Search responses

from
number<double>
required
size
number<double>
required
total
number<double>
required
results
object[]
required