Sephora Search API
Scrape Sephora Search data with one API call. Returns Sephora US products matching a keyword, 60 per page by default, each with product id, title, brand, price range, rating, review count, and image. Pagination is clean: page 2 of moisturizer had 60 new ids and zero overlap with page 1. A query that matches nothing is returned as an empty page and is not billed. min_rating is honoured. new sort returned the same ids as best_selling on the moisturizer probe, so prefer top_rated or price_low when you need a different order.
Last updated September 2026Maintained by the SocialCrawl team
Returns Sephora products matching a keyword, 60 per page, each with product id, title, brand, price, rating, and image.
Use it to find products by name or ingredient. A query that matches nothing comes back empty and is not billed.
Searching 60 platforms in parallel
What can you do with the Search API?
The Search endpoint gives you structured Sephora data with computed fields in a single request. No scraping infrastructure to build or maintain.
Example Request
curl -H "x-api-key: YOUR_API_KEY" \
"https://www.socialcrawl.dev/v1/sephora/search?query=moisturizer"import requests
response = requests.get(
"https://www.socialcrawl.dev/v1/sephora/search",
params={
'query': 'moisturizer',
},
headers={"x-api-key": "YOUR_API_KEY"},
)
data = response.json()const response = await fetch(
"https://www.socialcrawl.dev/v1/sephora/search?query=moisturizer",
{
headers: { "x-api-key": "YOUR_API_KEY" },
},
);
const data = await response.json();Parameters
| Parameter | Required | Description |
|---|---|---|
| query | Yes | Search keyword, for example moisturizer or niacinamide. |
| page | No | Page number, starting at 1. Prefer the universal cursor parameter. |
| page_size | No | Products per page, 1 to 60. Default 60. |
| sort_by | No | Result ordering: best_selling (default), top_rated, price_low, price_high, or new. On a moisturizer keyword search, new returned the same ids as best_selling, so treat new as unverified. (best_selling | top_rated | price_low | price_high | new) |
| min_rating | No | Keep products whose average rating is at least this, 1 to 5. |
| min_price | No | Minimum list price in US dollars. |
| max_price | No | Maximum list price in US dollars. |
| is_new | No | When true, keep products Sephora flags as new. |
| category_id | No | Optional category id from GET /v1/sephora/categories to narrow the search. |
How does the Sephora Search API work?
Send a GET request with your API key and get back clean, structured JSON in our unified schema. Supported computed fields are populated when the source provides the required inputs.
Method
GET
Response
JSON
How do you scrape social media data in seconds?
The fastest social media scraping API for developers. Scrape profiles, posts, comments, and analytics from 60 platforms covering 10B+ monthly active users.
One schema, every platform
Query 60 platforms with identical response structures. Write your integration once.
Computed fields, not just scraped
When an endpoint supports these metrics and the source provides the required inputs, the normalized record includes engagement_rate, estimated_reach, content_category, and language. Ready to use.
See your data before you code
Visual Data Explorer. Paste any URL, get rich result cards, sortable tables, CSV export.
import requests
response = requests.get(
'https://www.socialcrawl.dev/v1/tiktok/profile',
params={'handle': 'charlidamelio'},
headers={'x-api-key': 'sc_YOUR_API_KEY'}
)
data = response.json(){
"success": true,
"platform": "tiktok",
"data": {
"author": {
"username": "charlidamelio",
"followers": 152400000
},
"engagement": {
"likes": 12400000000,
"engagement_rate": 0.087
},
"metadata": {
"language": "en",
"content_category": "lifestyle"
}
}
}Ready to scrape Sephora Search data?
Get your API key and start pulling Sephora data in under 60 seconds.
