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
string
required
Your API authentication token. Value:
Token YOUR_API_KEY.Query Parameters
string
required
Hash of the squid to get results from.
integer
Page number (default: 1).
Result Fields
Export Pins
string
Pinterest’s unique identifier for the pin. Example:
37858453110553201string
Direct link to the pin on Pinterest. Example:
https://www.pinterest.com/pin/37858453110553201/string
Title of the pin. Frequently empty: most Pinterest pins carry only a description. Example:
Bright Living Room with Windows and Window Silltext
Plain-text description (caption) of the pin.
text
Description with Pinterest’s own HTML markup (hashtag and mention links). Served on profile inputs, and on any pin when Full Pin Details is on.
text
Alternative text of the pin image. Uses the text written by the pinner when there is one, otherwise the text Pinterest generated automatically.
datetime
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:00boolean
True 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.
string
Playable video stream of the pin (HLS playlist, MP4 when Pinterest serves no playlist). Empty on image pins.
boolean
True when the pin is a paid Pinterest ad.
boolean
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.
string
Domain the pin links to, or
Uploaded by user for a direct upload. Example: potterybarn.comstring
Outbound link the pin points to.
integer
Number of times the underlying image was saved on Pinterest (the “saves” figure shown in the UI). Example:
3920integer
Number of times this exact pin was re-pinned. A different counter from
save_count, which aggregates every copy of the image.integer
Number of comments on the pin. Served on profile inputs, and on any pin when Full Pin Details is on.
integer
Number of users who favourited the pin. Served on board inputs, and on any pin when Full Pin Details is on.
integer
Total number of reactions on the pin. Pinterest currently ships a single reaction type.
string
Dominant colour of the pin image, as computed by Pinterest. Example:
#8e4a2cstring
Full resolution image of the pin.
integer
Width in pixels of the full resolution image.
integer
Height in pixels of the full resolution image.
json
Every image size Pinterest serves for the pin, keyed by size label, with url, width and height.
float
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.
string
Currency of
price_value.string
Visibility of the pin itself, e.g.
public. Served on profile inputs, and on any pin when Full Pin Details is on.string
Pinterest identifier of the account that owns the pin.
string
Handle of the account that owns the pin. Example:
potterybarnstring
Display name of the account that owns the pin. Example:
Pottery Barnstring
Link to the profile of the account that owns the pin.
integer
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.
string
Profile picture of the account that owns the pin.
boolean
True when the account that owns the pin is a Pinterest verified merchant.
string
Pinterest identifier of the board the pin is saved on.
string
Name of the board the pin is saved on. Example:
Instagram Inspirationstring
Link to the board the pin is saved on.
string
Visibility of the board, e.g.
public. Pinterest omits it from the keyword search payload.json
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.json
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
integer
Number of times the pin was shared. Only Pinterest’s pin page carries it, so it needs Full Pin Details.
string
Interest label Pinterest attaches to the pin, e.g.
Room Decor. Only Pinterest’s pin page carries it, so it needs Full Pin Details.json
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"}]}