curl --request POST \
--url https://api.anysite.io/api/pcpartpicker/products/search \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"count": 10000,
"timeout": 300,
"region": "us",
"search": "<string>",
"filters": [
{
"name": "<string>",
"values": [
"<string>"
]
}
],
"ranges": [
{
"name": "<string>",
"minimum": 123,
"maximum": 123
}
],
"sort": "<string>"
}
'import requests
url = "https://api.anysite.io/api/pcpartpicker/products/search"
payload = {
"count": 10000,
"timeout": 300,
"region": "us",
"search": "<string>",
"filters": [
{
"name": "<string>",
"values": ["<string>"]
}
],
"ranges": [
{
"name": "<string>",
"minimum": 123,
"maximum": 123
}
],
"sort": "<string>"
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
count: 10000,
timeout: 300,
region: 'us',
search: '<string>',
filters: [{name: '<string>', values: ['<string>']}],
ranges: [{name: '<string>', minimum: 123, maximum: 123}],
sort: '<string>'
})
};
fetch('https://api.anysite.io/api/pcpartpicker/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.anysite.io/api/pcpartpicker/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([
'count' => 10000,
'timeout' => 300,
'region' => 'us',
'search' => '<string>',
'filters' => [
[
'name' => '<string>',
'values' => [
'<string>'
]
]
],
'ranges' => [
[
'name' => '<string>',
'minimum' => 123,
'maximum' => 123
]
],
'sort' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-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.anysite.io/api/pcpartpicker/products/search"
payload := strings.NewReader("{\n \"count\": 10000,\n \"timeout\": 300,\n \"region\": \"us\",\n \"search\": \"<string>\",\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ],\n \"ranges\": [\n {\n \"name\": \"<string>\",\n \"minimum\": 123,\n \"maximum\": 123\n }\n ],\n \"sort\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-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.anysite.io/api/pcpartpicker/products/search")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"count\": 10000,\n \"timeout\": 300,\n \"region\": \"us\",\n \"search\": \"<string>\",\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ],\n \"ranges\": [\n {\n \"name\": \"<string>\",\n \"minimum\": 123,\n \"maximum\": 123\n }\n ],\n \"sort\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/pcpartpicker/products/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"count\": 10000,\n \"timeout\": 300,\n \"region\": \"us\",\n \"search\": \"<string>\",\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ],\n \"ranges\": [\n {\n \"name\": \"<string>\",\n \"minimum\": 123,\n \"maximum\": 123\n }\n ],\n \"sort\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"@type": "PcpartpickerProductCard",
"internal_id": "<string>",
"url": "<string>",
"name": "<string>",
"image": "<string>",
"price": 123,
"rating": 123,
"review_count": 123,
"specs": []
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}/pcpartpicker/products/search
Search one PCPartPicker component category — CPUs, coolers, motherboards, memory, storage, video cards, power supplies, cases, case fans, monitors, keyboards, mice, headphones, speakers, webcams, sound and network cards, fan controllers, thermal paste, optical drives, operating systems and UPS units. Narrows by any option filter the category publishes (manufacturer, chipset, socket, memory type, form factor, colour, rating and the rest), by numeric ranges such as price, capacity, clock speed, wattage, length and port counts, and by a keyword matched against product names. Returns each product with its PCPartPicker code, name, image, the category’s own spec columns, the current cheapest price and the community star rating.
Price: 20 credits per 100 results
⚠️ Common errors: 412: The category page did not come back with a product table, 422: A filter group, an option label or a sort value that this category does not publish
curl --request POST \
--url https://api.anysite.io/api/pcpartpicker/products/search \
--header 'Content-Type: application/json' \
--header 'access-token: <api-key>' \
--data '
{
"count": 10000,
"timeout": 300,
"region": "us",
"search": "<string>",
"filters": [
{
"name": "<string>",
"values": [
"<string>"
]
}
],
"ranges": [
{
"name": "<string>",
"minimum": 123,
"maximum": 123
}
],
"sort": "<string>"
}
'import requests
url = "https://api.anysite.io/api/pcpartpicker/products/search"
payload = {
"count": 10000,
"timeout": 300,
"region": "us",
"search": "<string>",
"filters": [
{
"name": "<string>",
"values": ["<string>"]
}
],
"ranges": [
{
"name": "<string>",
"minimum": 123,
"maximum": 123
}
],
"sort": "<string>"
}
headers = {
"access-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'access-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
count: 10000,
timeout: 300,
region: 'us',
search: '<string>',
filters: [{name: '<string>', values: ['<string>']}],
ranges: [{name: '<string>', minimum: 123, maximum: 123}],
sort: '<string>'
})
};
fetch('https://api.anysite.io/api/pcpartpicker/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.anysite.io/api/pcpartpicker/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([
'count' => 10000,
'timeout' => 300,
'region' => 'us',
'search' => '<string>',
'filters' => [
[
'name' => '<string>',
'values' => [
'<string>'
]
]
],
'ranges' => [
[
'name' => '<string>',
'minimum' => 123,
'maximum' => 123
]
],
'sort' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access-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.anysite.io/api/pcpartpicker/products/search"
payload := strings.NewReader("{\n \"count\": 10000,\n \"timeout\": 300,\n \"region\": \"us\",\n \"search\": \"<string>\",\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ],\n \"ranges\": [\n {\n \"name\": \"<string>\",\n \"minimum\": 123,\n \"maximum\": 123\n }\n ],\n \"sort\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("access-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.anysite.io/api/pcpartpicker/products/search")
.header("access-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"count\": 10000,\n \"timeout\": 300,\n \"region\": \"us\",\n \"search\": \"<string>\",\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ],\n \"ranges\": [\n {\n \"name\": \"<string>\",\n \"minimum\": 123,\n \"maximum\": 123\n }\n ],\n \"sort\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.anysite.io/api/pcpartpicker/products/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["access-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"count\": 10000,\n \"timeout\": 300,\n \"region\": \"us\",\n \"search\": \"<string>\",\n \"filters\": [\n {\n \"name\": \"<string>\",\n \"values\": [\n \"<string>\"\n ]\n }\n ],\n \"ranges\": [\n {\n \"name\": \"<string>\",\n \"minimum\": 123,\n \"maximum\": 123\n }\n ],\n \"sort\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body[
{
"id": "<string>",
"@type": "PcpartpickerProductCard",
"internal_id": "<string>",
"url": "<string>",
"name": "<string>",
"image": "<string>",
"price": 123,
"rating": 123,
"review_count": 123,
"specs": []
}
]{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
API token from the dashboard
Headers
Body
cpu, cpu-cooler, motherboard, memory, internal-hard-drive, video-card, power-supply, case, headphones, keyboard, mouse, speakers, webcam, monitor, os, sound-card, wired-network-card, wireless-network-card, case-fan, fan-controller, thermal-paste, external-hard-drive, optical-drive, ups 1 <= x <= 2000020 <= x <= 1500au, at, be, ca, cz, dk, fi, fr, de, hu, ie, it, nl, nz, no, pl, pt, ro, sa, sk, es, se, uk, us 1Show child attributes
Show child attributes
Show child attributes
Show child attributes
1