OpenAPI Specification
openapi: 3.0.3
info:
title: ValueSERP Search Images Shopping API
description: Real-time Google SERP data API supporting organic search, shopping, news, images, places, and product results via simple GET requests authenticated with an API key. Returns structured JSON with organic results, ads, knowledge graphs, answer boxes, AI overviews, and more. Operated by Traject Data.
version: '1.0'
contact:
name: ValueSERP Support
url: https://trajectdata.com/serp/value-serp-api/
termsOfService: https://trajectdata.com/serp/value-serp-api/
x-api-id: valueserp-search
servers:
- url: https://api.valueserp.com
description: ValueSERP Production API
security:
- apiKeyQuery: []
tags:
- name: Shopping
description: Google Shopping product results.
paths:
/search#shopping:
get:
operationId: googleShopping
summary: Google Shopping Search
description: Retrieve real-time Google Shopping product results for a given keyword. Set search_type=shopping. Supports price filtering, condition, merchant filtering, and sorting.
tags:
- Shopping
parameters:
- $ref: '#/components/parameters/api_key'
- name: search_type
in: query
required: true
schema:
type: string
enum:
- shopping
description: Must be set to "shopping".
example: shopping
- $ref: '#/components/parameters/q'
- $ref: '#/components/parameters/location'
- $ref: '#/components/parameters/location_auto'
- $ref: '#/components/parameters/google_domain'
- $ref: '#/components/parameters/gl'
- $ref: '#/components/parameters/hl'
- $ref: '#/components/parameters/page'
- $ref: '#/components/parameters/max_page'
- $ref: '#/components/parameters/uule'
- name: sort_by
in: query
required: false
schema:
type: string
enum:
- relevance
- price_low_to_high
- price_high_to_low
- review_score
description: Sort order for shopping results.
example: relevance
- name: shopping_buy_on_google
in: query
required: false
schema:
type: boolean
description: Include only "Buy on Google" products.
- name: shopping_filter
in: query
required: false
schema:
type: string
description: Filter shopping results by attribute (e.g., brand).
example: brand
- name: shopping_price_min
in: query
required: false
schema:
type: number
format: decimal
description: Minimum product price filter.
example: 4.99
- name: shopping_price_max
in: query
required: false
schema:
type: number
format: decimal
description: Maximum product price filter.
example: 29.99
- name: shopping_condition
in: query
required: false
schema:
type: string
enum:
- new
- used
description: Filter by product condition.
example: new
- name: shopping_merchants
in: query
required: false
schema:
type: string
description: Comma-separated list of merchant IDs to filter results.
responses:
'200':
description: Successful shopping search response
content:
application/json:
schema:
$ref: '#/components/schemas/ShoppingResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'402':
$ref: '#/components/responses/PaymentRequired'
'429':
$ref: '#/components/responses/TooManyRequests'
'500':
$ref: '#/components/responses/InternalServerError'
'503':
$ref: '#/components/responses/ServiceUnavailable'
components:
parameters:
hl:
name: hl
in: query
required: false
schema:
type: string
default: en
description: Determines the Google UI language to return results in. BCP-47 language code.
example: en
uule:
name: uule
in: query
required: false
schema:
type: string
description: Custom Google UULE parameter to override the location.
location_auto:
name: location_auto
in: query
required: false
schema:
type: boolean
default: true
description: When true, automatically updates gl and hl parameters based on the built-in location value. Defaults to true.
google_domain:
name: google_domain
in: query
required: false
schema:
type: string
default: google.com
description: The Google domain to use for the search.
example: google.com
location:
name: location
in: query
required: false
schema:
type: string
description: Geographic location for the search. Accepts location names (e.g., "manhattan,new york,united states") or GPS coordinates (e.g., "lat 43.437677,lon 3.8392765").
example: united states
page:
name: page
in: query
required: false
schema:
type: integer
minimum: 1
default: 1
description: The results page number to retrieve. Defaults to 1.
example: 1
gl:
name: gl
in: query
required: false
schema:
type: string
default: us
description: Determines the Google country to use for the query. ISO 3166-1 alpha-2 country code.
example: us
api_key:
name: api_key
in: query
required: true
schema:
type: string
description: Your ValueSERP API key. Use "demo" for testing limited queries.
example: demo
q:
name: q
in: query
required: true
schema:
type: string
description: The keyword or search query to use.
example: pizza
max_page:
name: max_page
in: query
required: false
schema:
type: integer
minimum: 1
description: Retrieve multiple result pages in a single API request. Specifies the maximum page number to retrieve.
example: 3
schemas:
ErrorResponse:
type: object
description: Error response body.
properties:
request_info:
type: object
properties:
success:
type: boolean
example: false
message:
type: string
description: Human-readable error message.
ShoppingResult:
type: object
description: A single Google Shopping product result.
properties:
position:
type: integer
description: Position in results.
title:
type: string
description: Product name/title.
link:
type: string
format: uri
description: Product page URL.
price:
type: string
description: Product price with currency symbol.
extracted_price:
type: number
format: decimal
description: Numeric price value.
merchant:
type: string
description: Merchant/seller name.
rating:
type: number
format: float
description: Product rating.
reviews:
type: integer
description: Number of reviews.
shipping:
type: string
description: Shipping information.
condition:
type: string
description: Product condition (new/used).
thumbnail:
type: string
format: uri
description: Product thumbnail image URL.
RequestInfo:
type: object
description: Meta-information about the API request status.
properties:
success:
type: boolean
description: Whether the request was processed successfully.
message:
type: string
description: Status message (present on errors or incidents).
credits_used:
type: integer
description: Number of credits consumed by this request.
credits_remaining:
type: integer
description: Number of credits remaining in the account.
SearchParameters:
type: object
description: Echo of the parameters used for the search.
properties:
q:
type: string
description: The search query keyword used.
search_type:
type: string
description: The type of search performed.
gl:
type: string
description: Country code used.
hl:
type: string
description: Language code used.
google_domain:
type: string
description: Google domain used.
SearchMetadata:
type: object
description: Metadata about the search execution.
properties:
id:
type: string
description: Unique identifier for this search request.
google_url:
type: string
format: uri
description: The Google URL that was scraped to generate results.
total_time_taken:
type: number
format: float
description: Total time taken to process the request in seconds.
created_at:
type: string
format: date-time
description: Timestamp when the search was created.
ShoppingResponse:
type: object
description: Google Shopping search results response.
properties:
request_info:
$ref: '#/components/schemas/RequestInfo'
search_metadata:
$ref: '#/components/schemas/SearchMetadata'
search_parameters:
$ref: '#/components/schemas/SearchParameters'
shopping_results:
type: array
items:
$ref: '#/components/schemas/ShoppingResult'
description: Shopping product listings.
filters:
type: array
items:
type: object
properties:
name:
type: string
options:
type: array
items:
type: object
properties:
text:
type: string
link:
type: string
format: uri
description: Available shopping filters.
responses:
InternalServerError:
description: Internal Server Error - Retry after a delay; contact support if the issue persists.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
PaymentRequired:
description: Payment Required - Your ValueSERP account has run out of available credits or there is a payment issue.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Unauthorized - The api_key supplied is not valid.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest:
description: Bad Request - Invalid parameters or unsupported parameter combinations.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
ServiceUnavailable:
description: Service Unavailable - Returned during parsing incidents. Requests are not charged. Use skip_on_incident=true to opt out automatically.
headers:
Retry-After:
schema:
type: integer
description: Seconds to wait before retrying.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
TooManyRequests:
description: Too Many Requests - Your plan's rate limit has been exceeded.
headers:
Retry-After:
schema:
type: integer
description: Seconds to wait before retrying.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
apiKeyQuery:
type: apiKey
in: query
name: api_key
description: API key for authentication. Pass as the api_key query parameter. Use "demo" as the key for testing.