/preview/recommendation/search
curl --request POST \
--url https://api.criteo.com/preview/recommendation/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"nbRequestedProducts": 123,
"partnerId": 123,
"adId": 123,
"adSetId": 123,
"userId": "<string>"
}
'import requests
url = "https://api.criteo.com/preview/recommendation/search"
payload = {
"nbRequestedProducts": 123,
"partnerId": 123,
"adId": 123,
"adSetId": 123,
"userId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
nbRequestedProducts: 123,
partnerId: 123,
adId: 123,
adSetId: 123,
userId: '<string>'
})
};
fetch('https://api.criteo.com/preview/recommendation/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.criteo.com/preview/recommendation/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([
'nbRequestedProducts' => 123,
'partnerId' => 123,
'adId' => 123,
'adSetId' => 123,
'userId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.criteo.com/preview/recommendation/search"
payload := strings.NewReader("{\n \"nbRequestedProducts\": 123,\n \"partnerId\": 123,\n \"adId\": 123,\n \"adSetId\": 123,\n \"userId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.criteo.com/preview/recommendation/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"nbRequestedProducts\": 123,\n \"partnerId\": 123,\n \"adId\": 123,\n \"adSetId\": 123,\n \"userId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.criteo.com/preview/recommendation/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"nbRequestedProducts\": 123,\n \"partnerId\": 123,\n \"adId\": 123,\n \"adSetId\": 123,\n \"userId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"extraInfos": [
123
],
"products": [
{
"alternativeClickUrl": "<string>",
"brand": "<string>",
"clickUrl": "<string>",
"description": "<string>",
"googleCategory": "<string>",
"hasVariants": true,
"imageUrl": "<string>",
"name": "<string>",
"price": 123,
"productExternalId": "<string>",
"relevancyScore": 123,
"retailPrice": 123
}
]
}/preview/recommendation/search
Retrieves a list of products recommended for the given user. This end point can either rely on a Criteo UserId, or a list of user events to perform the recommendation
POST
/
preview
/
recommendation
/
search
/preview/recommendation/search
curl --request POST \
--url https://api.criteo.com/preview/recommendation/search \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"nbRequestedProducts": 123,
"partnerId": 123,
"adId": 123,
"adSetId": 123,
"userId": "<string>"
}
'import requests
url = "https://api.criteo.com/preview/recommendation/search"
payload = {
"nbRequestedProducts": 123,
"partnerId": 123,
"adId": 123,
"adSetId": 123,
"userId": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
nbRequestedProducts: 123,
partnerId: 123,
adId: 123,
adSetId: 123,
userId: '<string>'
})
};
fetch('https://api.criteo.com/preview/recommendation/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.criteo.com/preview/recommendation/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([
'nbRequestedProducts' => 123,
'partnerId' => 123,
'adId' => 123,
'adSetId' => 123,
'userId' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.criteo.com/preview/recommendation/search"
payload := strings.NewReader("{\n \"nbRequestedProducts\": 123,\n \"partnerId\": 123,\n \"adId\": 123,\n \"adSetId\": 123,\n \"userId\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.criteo.com/preview/recommendation/search")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"nbRequestedProducts\": 123,\n \"partnerId\": 123,\n \"adId\": 123,\n \"adSetId\": 123,\n \"userId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.criteo.com/preview/recommendation/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"nbRequestedProducts\": 123,\n \"partnerId\": 123,\n \"adId\": 123,\n \"adSetId\": 123,\n \"userId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"extraInfos": [
123
],
"products": [
{
"alternativeClickUrl": "<string>",
"brand": "<string>",
"clickUrl": "<string>",
"description": "<string>",
"googleCategory": "<string>",
"hasVariants": true,
"imageUrl": "<string>",
"name": "<string>",
"price": 123,
"productExternalId": "<string>",
"relevancyScore": 123,
"retailPrice": 123
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
application/json
Recommendation request parameters
Amount of products to recommend.
Id of the partner.
Id of the Ad. This field is optional, it allows to setup Reco controls at Ad level.
Id of the AdSet. This field is optional and is resolved automatically for adsets previously configured.
Type of the user identifier (CtoBundle, Idfa, Gaid...) Optional if its type is CtoBundle
Available options:
CtoBundle, Idfa, Gaid, InternalUserId Used to retrieve user events from Criteo trackers.
Was this page helpful?
⌘I