Developer tutorial
How to scrape Pinterest search results with Node.js (2026)
This tutorial shows how to scrape Pinterest search results in Node.js using the SocialCrawl API. You get pins matching a query with title, description, image, and source link from one GET request, with no Pinterest developer account, proxies, or HTML parsing. The code below is runnable as-is, and the response underneath it is a real, unedited call.
Code tested July 2026
How it works
- 1Get a free API keyCreate a SocialCrawl account and copy your API key from the dashboard. Every new account starts with free credits.
- 2Set up Node.jsUse Node.js 18 or newer, which includes the fetch API with no extra packages.
- 3Call the Pinterest Search endpointSend a GET request to /v1/pinterest/search with your API key in the x-api-key header and the `query` parameter.
- 4Read the responseParse the JSON. SocialCrawl returns pins matching a query with title, description, image, and source link in one normalized schema, so you write no HTML parsing or proxy code.
The code
A real, unedited response from the request above.
const params = new URLSearchParams({
"query": "home decor ideas",
});
const response = await fetch(
`https://www.socialcrawl.dev/v1/pinterest/search?${params}`,
{ headers: { "x-api-key": "YOUR_API_KEY" } },
);
const data = await response.json();
console.log(data);[ RESPONSE ]
{
"success": true,
"platform": "pinterest",
"endpoint": "/v1/pinterest/search",
"data": {
"items": [
{
"post": {
"id": "__EMPTY__",
"url": "https://www.pinterest.com/pin/1275089170986570",
"content": {
"text": null,
"media_urls": null,
"thumbnail_url": null,
"duration_seconds": null
},
"author": {
"username": null,
"display_name": null,
"avatar_url": null,
"verified": null
},
"engagement": {
"views": null,
"likes": null,
"comments": null,
"shares": null,
"saves": null
},
"flags": {
"nsfw": null,
"spoiler": null,
"pinned": null,
"deleted": false
},
"published_at": null
},
"computed": {
"engagement_rate": null,
"language": null,
"content_category": null,
"estimated_reach": null
}
},
{
"post": {
"id": "UGluOjIyNTAzOTMxMjYyNzg4MTg5Mg==",
"url": "https://www.pinterest.com/pin/225039312627881892",
"content": {
"text": "Cozy Reading Nook",
"media_urls": null,
"thumbnail_url": null,
"duration_seconds": null
},
"author": {
"username": null,
"display_name": null,
"avatar_url": null,
"verified": null
},
"engagement": {
"views": null,
"likes": null,
"comments": null,
"shares": null,
"saves": null
},
"flags": {
"nsfw": null,
"spoiler": null,
"pinned": null,
"deleted": false
},
"published_at": null
},
"computed": {
"engagement_rate": null,
"language": null,
"content_category": "other",
"estimated_reach": null
}
}
],
"next_cursor": "Y2JVSG81V2sxcmNHRlpWM1J5VFVad1ZsWlVSbXRXTVVZMldWVlZNV0ZIU2xaTlZGSlhVbXhhVkZsdGN6RldhekZYVm14d1RrMXNTbEpXYlhScllXMVdWMVZ1VGxaaVdFSnlWRlZvVTJWV1pISlhhM1JYVm10V05sVldVbE5XVjBaeVkwVm9XbUpHY0hwV01GcGhWMVp3UjJORk5XaE5WbXQ0Vm10U1EyRXhXWGxUYTFwT1ZrWndXVlpyVlRGVlZsWnlXa1JDVDJKSFVqQlpNRnBoWWtaS1ZWWnJiRmRpUmtwVVYxWmtSMk5yTVVsaFJsWlhWakZLVEZkc1pEUmtNazVYVTI1U2ExSnJTbGhVVlZwWFRURlplV1ZHVGxWaVZscElXV3RhYjFaWFNsbFZiVVphVmpOU2FGbDZSbE5XYkZaeVdrZHNVMVpGVlhsV1ZtTjRaREZSZVZOc1dsaGliRXBaV1d4b1ExSXhjRVZTYm1ScVZtMVNNRlJXVlRWaVIwVjRZMGhzVjFJelVuWlVhMXBTWlVaT2MxcEhSbE5TTWswMVdtdGFWMU5YU2paVmJYaFRWMGRvUmxkc1ZsZGhNV1J6VjFod2FGSkdjRmxaYTJSdVpXeHdWbFpZYUdwV2JYY3lWVzF6TVZVeFNYbFVXR2hYVW14d1ZGbFhNVkprTURsWFZtMUdiR0V6UWxGV2JYUnJWREF3ZUZSWWJHdFNNMUpYV1d0YVMxSldhM2RWYlRsVllsWmFlVlpzYUc5WFIwVjRVMnRvV21KR1ZYZGFWbHBMVmxaS2NrNVhhR2xTTTFFd1ZtcEdiMlF4VW5SV2JGcFFWbFphYUZSVVRrTlZSbHB5VjI1T1QxSnNTakJaTUdSM1ZERktWVkpzV2xoWFNFSklWa2N4UjJOdFJYcGpSbWhwVjBWS1dGZHJVa0pPVmxwWFUyeFdWV0Y2VmxSVVZXaERaVlphUjFwSVpGVmhla1pYVkZaV2IxWldXa1pYYlVaYVZqTm9lbFJ0ZUZOV01WWnpWMjE0YVZORlNscFdWekIzWlVaUmVWSnVVbXhTZW14WldXeG9RMk5XY0ZaV1ZFWnJVbXh3VmxaWGN6RmhWMHAwWVVaR1YxWXphR2haVkVFMVVXeENWVTFVYUU1V1JXdDZWR3hTUWs1Rk9WVlNWRTVPVWtkek1GUnRjRlpOTURGRVkwVm9WbFpZWkhoYWEyUkhZa1UxV0ZWVVVtRmlWWEJ3VjJ0U1QyRldjRVZoZWs1UFVrZGplRmRXWkVwa01EbFZWMjB4V21Gc2F6RlhiWEJYWVRBeFdGUllhRnBOYTNCeVZGVlNUMkV4YkZWWFZGSmFWa1ZLY2xSdWNFTmlSVEZJVTFSU1QxWkhUWHBVTVZKcllURnNjV0V6WkZCV01VVXdWMVpTYTA5R1VuSldiR2h0VVZRd09XWkVSWGxPZWxWM1QwUnJlRTU2UVRWUFJGa3hUbnBCY1ZJeFJrMUxibmQ1VFVkV2FrMUhXVEJOUkVab1dYcFpOVTFxVFhwYWFsVTFXVlJWZWxsNmF6TmFSMDV0V21wSk1VOVVXbXRaYlZVeldrUkNhMDFxU21oWlZFWm9UVzFSTlU1cVFtcFpiVkV3V2tSTk0xbDZaR3BhYWxreFprVTFSbFl6ZHowPXxVSG81VVZGVVNUVmlXR2hyWlZkb1dGcDZNV1pOVkdobVRGUkdPRTFVU1ROT1ZFRTBUMVJGTTAxRWF6Uk9hbFV6VFVOd1NGVlZkM0ZtUkU1dFdWUldiVnBIU1RCYVJFWnRUMFJXYUUxNlZYaE5SRkpxVFVSUmVVMVVhelZaYlZKcFRYcEtiRnBVV1RGTlYxRXpXWHBOZVZsVVl6SmFSR2h0VG0xSmQxbFVVVEJOZWtFd1dsUkZOVnB0VW1oYWFrNDRWR3RXV0daQlBUMD18Tm9uZXwxMjc1MDg5MTcwOTg2NTcwKkdRTCp8Mzg4OTU1M2VjZjlhYzRjZWRhMjliNDU5MzM5YzAzYjFlZWI5YjY5YjcxNjlmZDVhZjhiOGI0OTFkZWY1NGE0NHxORVd8",
"total": null,
"dropped": 0
},
"credits_used": 1,
"credits_remaining": 9999,
"request_id": "req_example000000",
"cached": false,
"pagination": {
"next_cursor": "sc.eyJ2IjoyLCJjIjoiWTJKVlNHODFWMnN4Y21OSFJscFdNMUo1VkZWYWQxWnNXbFZTYlhSWFRWVlpNbGRXVmxaTlYwWklVMnhhVGxaR1NsaFZiWGhoVmtac2RHTjZSbGRoZWtaWVZtMTRkMVJyTVhOVGJFcFhZbGhTY2xsWE1WZFdNVloxVkd4YWFWZEZTbmxXUmxadlZUSldWMXBJU2xoaE0xSllWbTEwVjA1c1ZsZFZiRTVYVmpCYWVWa3dWbTlYYlVwSFkwaHdWMDFHY0doV01WcDNVakpPUms1WGFFNVdiWFEwVm0xMFUxRXlSWGhYV0d4VVlURndUMVpyV25kWFZscHlWbFJHVmxac1dubFhhMUpEVkRKS1NGVnFRbHBOUm5Cb1dXdGFTMVpXV25KaVJtUnBVbXR3VlZZeFdtdFNNazV5VFZWc2FGSnNXbGhXYWtaTFZFWmtjMXBFVW10TmF6VllWVEkxVTJFeFNuSlRiR2hWVmxad1dGUlVSbHBsVjFaSFZHeFdhVlpzY0VsWFYzUmhZakZhV0ZOc2JGWmlWVnBoVm1wT1UyRkdiRFpTYkU1WFlrWmFlVmRyWkhOVk1WcEdWbGhzVjFadFRqUmFSRVpTWlZaT2MxZHNhR2xpUlhCYVYxZDRiMUV4U1hoalJWWlRZbTFTY1ZadE1WTk5SbEpYVmxSV2FWSXdWalJaTUdoelZqRkplbFZ1V2xWaE1YQlRXbFZhVDJNeGNFaFNiRTVUVFdzd01WZHRkR0ZXTVU1WVUycGFWbUpZYUZSV01HUnZVbXhrYzFac1pHaE5WMUo2VmpGb2QyRkdTa2RqUm14YVlUSlNkVnBYZUhkV2JGcFpZVWR3VjJKWVkzbFdWekY2VFZaVmVGTlliRlZYUjJoWVZXMTRkMVpHYkZoTlZrcHJUVVJzV0ZadE1VZGlSMFY2VVd4R1YySllVbkpXUkVGM1pVWlNXV0pIZEZOTk1VcFlWMWQwWVZNeFNsZGhNMlJXWWxSc1ZsbHNXbUZsVmxwellVYzVXRkl3VmpSVk1uUnZWMjFLUjFaWVpHRldiSEJNVm14YVMyTnJOVmhoUjJ4VFRURkZkMVp0Y0VkaU1sRjRWVzVTVjJKR2NGRldiRnBoWVVaU1ZWUnJUbFpTYkhCNVZqSTFUMVF4U25OVGFrSmFUVWRTTTFaRVJrdFdWa3B6VjJ4b1dGTkZTa2xXYTJONFVqSk9kRkpZY0dwU2JXaHdWakJXUzFkR1pISlZhMHBQVm14d1dGVXllRmRXVjBZMlZteFNWVlpYYUVSYVZscGhVakZ3U1ZwR1ZtaGxhMXBZVmtaYVYySXhXbGRYYTFwWVlsVmFZVlpxVG05bGJGSjBaVVpPVjAxV1ducFdNakUwWVZaT1JsTnNjRmRXZWtJeldsVmFVbVZXU25WVmJYaFRaVzE0V2xkWGVHOVJNazVYWTBaYVYxWkZXbkpWYlhoM1ZteGFXR042Um1oV01IQXdXVlZhUjFZeFdYcGhSMmhhVmtWRk1WVlhlRU5XVlRGVllVVTFWMUpYZERaV1IzaFRVV3MxUms5V1ZsTldSVFZQVld0a2VrMUdVblJqUmxwT1RVUkdSVmt3Vm05V2JGcFpXa2hvWVdFeVVraFphMVV4VjBaV1ZWVnRSbWxXV0VKM1ZqSjBVMVF5UmxkalJWWm9aV3MxVUZWclpHcGxSbVJYV2tWd2EwMUViRlpXTWpCNFYyMUdjMkY2UmxoaVdFSllXVlJCZUZkR1VsbGhSbkJPWVROQ2VWWkdWbE5VTWtWNFlrWldXRlpHU21GV2ExWkxZMnhTZFdORlRtbFNWRVpKVlRGU1UxUXhXa2hVV0hCVlRWWktjbGxVUm5OalYwVjZXa1pDVjAxVlZYZFdNVnBUWVRBNVIxVnVTbGRpUjJoMFZWWlJkMDlYV2tWU1dHeFBaV3hXTTFRd1VuSmxSVFUyVVZSV1VGSkdhM2hVYm5CQ1kxWkplRkpyTVV4aWJtUTFWRlZrVjJGck1VaFhWRUpPVWtWYWIxZFljRnBPVlRGeFZGaHdZV0ZzVlRGWFZsSldaV3hzTm1GNlRtRlNNRFYwVjIxd1NrMVZPVlZYYlhSYVlsWlZlbGRyVWtOaE1ERnhVMjFvV2xaRldtOVVWekZTVGxVMWNWRnRjRnBpVmtWM1YydFNUazB4YkRaYVIzQmhZV3hyZUZwclZURlNiRmw2Wkhvd1BYeFZTRzgxVlZaR1ZWTlVWbWxYUjJoeVdsWmtiMWRHY0RaTlYxcE9Wa2RvYlZSR1VrZFBSVEZWVTFST1QxWkZSVEJVTVZKR1RUQXhSV0Y2VWs5aGJGVjZWRlZPZDFOR1ZsWmtNMFp0VWtVMWRGZFdVbGRpVm5CSVUxUkNZVkpGV25SVU1GSlhZVVV4TmxaWWFFNVNSa3B4VkZWU1VtVlZNVlZoZWxaYVlsWktjRlJZY0V0aVJuQlZWMVJHVGxZeFJYcFhXSEJPWlZac1ZWbDZTbUZTUjJoMFZHMHhTbVF4YkZWVlZFSk9aV3RGZDFkc1VrWk9WbkIwVlcxb1lXRnJORFJXUjNSWFYwZGFRbEJVTUQxOFRtOXVaWHd4TWpjMU1EZzVNVGN3T1RnMk5UY3dLa2RSVENwOE16ZzRPVFUxTTJWalpqbGhZelJqWldSaE1qbGlORFU1TXpNNVl6QXpZakZsWldJNVlqWTVZamN4TmpsbVpEVmhaamhpT0dJME9URmtaV1kxTkdFME5IeE9SVmQ4IiwicCI6ImN1cnNvciJ9",
"has_more": true,
"page_size": 16
}
}Prefer another language?
FAQ
Have a question? We got answers
Find answers to frequently asked questions about SocialCrawl's API, pricing, and capabilities.
Contact usDo I need a Pinterest developer account to scrape Pinterest search results?
No. SocialCrawl handles authentication and proxies upstream, so you never register a Pinterest app, manage OAuth tokens, or run your own scrapers. One API key returns Pinterest data directly.
What does the Pinterest Search endpoint return?
It returns pins matching a query with title, description, image, and source link. The response is normalized into SocialCrawl's unified schema, identical in shape across every platform.
How much does it cost to scrape Pinterest search results?
Each call costs a small number of credits, and new accounts start with free credits. There are no monthly minimums, so you pay only for the calls you make.
Can I use this Node.js code in production?
Yes. The snippet on this page is the real request against the live API. For production, add error handling and follow the response cursor to paginate through large result sets.
Ask AI about SocialCrawl
