Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', 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.lobstr.io/v1/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"pin_id": "<string>",
"pin_url": "<string>",
"title": "<string>",
"description": "<string>",
"description_html": "<string>",
"alt_text": "<string>",
"created_at": {},
"is_video": true,
"video_url": "<string>",
"is_promoted": true,
"is_repin": true,
"domain": "<string>",
"destination_url": "<string>",
"save_count": 123,
"repin_count": 123,
"comment_count": 123,
"favorite_count": 123,
"reaction_count": 123,
"dominant_color": "<string>",
"image_url": "<string>",
"image_width": 123,
"image_height": 123,
"image_sizes": "<any>",
"price_value": 123,
"price_currency": "<string>",
"pin_privacy": "<string>",
"pinner_id": "<string>",
"pinner_username": "<string>",
"pinner_full_name": "<string>",
"pinner_url": "<string>",
"pinner_follower_count": 123,
"pinner_avatar_url": "<string>",
"pinner_is_verified_merchant": true,
"board_id": "<string>",
"board_name": "<string>",
"board_url": "<string>",
"board_privacy": "<string>",
"visual_annotations": "<any>",
"carousel_images": "<any>",
"share_count": 123,
"dominant_interest": "<string>",
"visual_objects": "<any>"
}Pinterest Scraper
Get Results
Retrieve scraped data from Pinterest Scraper
GET
/
v1
/
results
Get Results
curl --request GET \
--url https://api.lobstr.io/v1/results \
--header 'Authorization: <authorization>'import requests
url = "https://api.lobstr.io/v1/results"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.lobstr.io/v1/results', 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.lobstr.io/v1/results",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.lobstr.io/v1/results"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.lobstr.io/v1/results")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.lobstr.io/v1/results")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"pin_id": "<string>",
"pin_url": "<string>",
"title": "<string>",
"description": "<string>",
"description_html": "<string>",
"alt_text": "<string>",
"created_at": {},
"is_video": true,
"video_url": "<string>",
"is_promoted": true,
"is_repin": true,
"domain": "<string>",
"destination_url": "<string>",
"save_count": 123,
"repin_count": 123,
"comment_count": 123,
"favorite_count": 123,
"reaction_count": 123,
"dominant_color": "<string>",
"image_url": "<string>",
"image_width": 123,
"image_height": 123,
"image_sizes": "<any>",
"price_value": 123,
"price_currency": "<string>",
"pin_privacy": "<string>",
"pinner_id": "<string>",
"pinner_username": "<string>",
"pinner_full_name": "<string>",
"pinner_url": "<string>",
"pinner_follower_count": 123,
"pinner_avatar_url": "<string>",
"pinner_is_verified_merchant": true,
"board_id": "<string>",
"board_name": "<string>",
"board_url": "<string>",
"board_privacy": "<string>",
"visual_annotations": "<any>",
"carousel_images": "<any>",
"share_count": 123,
"dominant_interest": "<string>",
"visual_objects": "<any>"
}Retrieve scraped data from your Pinterest Scraper runs.
Headers
Query Parameters
Result Fields
Export Pins
Pinterest’s unique identifier for the pin. Numeric for most pins, but some pins carry an encoded id such as
e1_AfqPShzqO1C7_LEkrAbtoIWUe2MoGdDTj5vU32Lr9gXn25qs1FpIvg, so store it as text. Example: 37858453110553201Direct link to the pin on Pinterest. Example:
https://www.pinterest.com/pin/37858453110553201/Title of the pin. Frequently empty: most Pinterest pins carry only a description. Example:
Bright Living Room with Windows and Window SillDescription with Pinterest’s own HTML markup (hashtag and mention links). Served on profile inputs, and on any pin when Full Pin Details is on.
Alternative text of the pin image. Uses the text written by the pinner when there is one, otherwise the text Pinterest generated automatically.
Date and time (UTC) the pin was created. Not served by Pinterest on board inputs unless Full Pin Details is on. Example:
2023-06-07 12:38:53+00:00True when the pin carries a video. Left blank (not False) on keyword-search rows: that surface only proves videos, it never says a pin has none — turn on Full Pin Details for a definitive answer on those rows.
Playable video stream of the pin (HLS playlist, MP4 when Pinterest serves no playlist). Empty on image pins.
True when the pin was saved from another pin rather than uploaded. Served on board and profile inputs, and on any pin when Full Pin Details is on.
Number of times the underlying image was saved on Pinterest (the “saves” figure shown in the UI). Example:
3920Number of times this exact pin was re-pinned. A different counter from
save_count, which aggregates every copy of the image.Number of comments on the pin. Served on profile inputs, and on any pin when Full Pin Details is on.
Number of users who favourited the pin. Served on board inputs, and on any pin when Full Pin Details is on.
Price attached to the pin when it is a product pin. Served on profile inputs, and on any pin when Full Pin Details is on.
Visibility of the pin itself, e.g.
public. Served on profile inputs, and on any pin when Full Pin Details is on.Follower count of the account that owns the pin. Pinterest only ships it on some surfaces; filled from the profile header on a profile input.
Topic labels Pinterest attaches to the pin, e.g.
Flex Room Design Ideas. Free on keyword searches; on board and profile pins Pinterest only serves them with Full Pin Details.Every slide of a carousel pin, in order, with its own image url, width, height, outbound link and video url when the slide is a video. Empty for single-image pins. Free on board and profile pins; keyword searches only carry it with Full Pin Details.
Full Pin Details
Number of times the pin was shared. Only Pinterest’s pin page carries it, so it needs Full Pin Details.
Interest label Pinterest attaches to the pin, e.g.
Room Decor. Only Pinterest’s pin page carries it, so it needs Full Pin Details.Objects Pinterest detected inside the pin image. Only Pinterest’s pin page carries it, so it needs Full Pin Details. Frequently an empty list.
Code Examples
curl -G https://api.lobstr.io/v1/results \
-H "Authorization: Token YOUR_API_KEY" \
-d "squid=YOUR_SQUID_HASH" \
-d "page=1"
import requests
response = requests.get(
"https://api.lobstr.io/v1/results",
headers={"Authorization": "Token YOUR_API_KEY"},
params={"squid": "YOUR_SQUID_HASH", "page": 1},
)
print(response.json())
Response
200
{"total_results": 1, "data": [{"pin_id": "37858453110553201", "pin_url": "https://www.pinterest.com/pin/37858453110553201/", "title": "Bright Living Room with Windows and Window Sill", "description": "This deserves another spot on the grid.", "domain": "potterybarn.com", "destination_url": "https://www.potterybarn.com/products/printers-writing-large-desk/", "save_count": 3920, "image_url": "https://i.pinimg.com/originals/c3/df/7f/c3df7f6f591485da278cb5a44aeff0be.jpg", "pinner_username": "potterybarn", "board_name": "Instagram Inspiration"}]}