API Description

Target Reviews API Collect Target product reviews, ratings, publication dates and images.

Request URL

POST https://scrapeapi.pangolinfo.com/api/v1/ecommerce/target/reviews

Request Headers

ParametersParameter valueTypeDescription
Content-Typeapplication/jsonstringData format
AuthorizationBearer xxxstringAuthorization Token

Collection timeout: 90 seconds. Allow at least 105 seconds in your client.

Request Parameters

ParameterRequiredTypeDescription
productIdNostringProduct ID as a string; supply productId or productUrl.
productUrlNostringProduct URL on a configured storefront; alternative to productId.
Maximum length: 2048
pageNointegerPages start at 1. Continue with data.pagination.nextPage.
Default: 1
Minimum: 1
Maximum: 300001
pageSizeNointegerSee site table for defaults and limits; omit to use storefront default.
Minimum: 1
Maximum: 100
includeNativeNobooleanDefaults to true; includes original platform fields.
allowStaleNobooleanDefaults to false; true permits stale cache on failure, identified in meta.
refreshNobooleanDefaults to false; true bypasses fresh cache.

Supply at least one of productId or productUrl. Product IDs must be strings.

Supported Storefronts

CountryDefault page sizeMaximum page size
US2050

Reviews are returned in newest order.

Response Fields

FieldTypeDescription
codeintegerStatus code; 0 indicates success.
messagestringResponse message; ok on success.
pointCostnumberPoints charged for the complete response.
dataobject | nullCollected data, described below.

data Fields

FieldTypeDescription
countrystringStorefront country, not the review author’s country.
paginationobjectPagination details; continue using nextPage.
productIdstringProduct ID, returned as a string.
queryobjectEffective search parameters.
warningsstring[]Collection scope and data interpretation notes.
storestringstore
totalsobjectReported totals and returned counts, which may use different count semantics.
platformstringPlatform identifier.
sourceUrlstringsourceUrl
providerstringprovider
metaobjectCollection status and cache metadata.
schemaFingerprintstringschemaFingerprint
capturedAtstringCollection timestamp.
productSummaryobjectAggregate product rating and star distribution.
resultsobject[]Primary records returned by this request.
statisticsobjectstatistics

data.pagination Fields

FieldTypeDescription
nextPageintegerNext page number; null indicates the end.
totalPagesintegerTotal pages; null when unknown.
pageSizeintegerRecords per page.
hasNextbooleanWhether another page is available.
pageintegerCurrent page number.

data.totals Fields

FieldTypeDescription
queryintegerEffective search parameters.
reportedintegerreported
returnedintegerreturned
withTextintegerwithText

data.meta Fields

FieldTypeDescription
cachestringcache
stalebooleanstale
ageSecondsintegerageSeconds
operationIdstringoperationId
upstreamAttemptsintegerupstreamAttempts
coalescedbooleancoalesced

data.productSummary Fields

FieldTypeDescription
withTextCountnullText review count; null when unavailable.
reviewCountintegerReview count; null when unavailable.
averageRatingnumberAggregate average rating.
scopestringScope covered by the aggregate.
warningsany[]Collection scope and data interpretation notes.
sourcestringSource of the aggregate statistics.
totalCountintegerPlatform total, interpreted using countKind.
countKindstringCount semantics, distinguishing all ratings from text reviews.
starDistributionobjectCounts for ratings from 1 to 5 stars.

data.productSummary.starDistribution Fields

FieldTypeDescription
1integer1
2integer2
3integer3
4integer4
5integer5

data.results[] Fields

FieldTypeDescription
reviewIdstringUnique review identifier.
contentstringBody text in the original language.
titlestring | nullReview or post title; null when unavailable.
authorstring | nullAuthor name.
starstring | nullReview rating as a string, e.g. 5.0.
datestring | nullReview date reported by the platform.
createdAtstring | nullFull publication timestamp; null when unavailable.
purchasedboolean | nullVerified purchase status; null when unknown.
imgsstring[]Image URL array.
photosany[]Original image objects, including available sizes.
videosany[]Video array.
nativeobjectOriginal platform fields, controlled by includeNative.

data.statistics Fields

FieldTypeDescription
metadataobjectmetadata
statisticsobjectstatistics

data.statistics.metadata Fields

FieldTypeDescription
has_videosbooleanhas_videos
has_photosbooleanhas_photos
has_verifiedbooleanhas_verified
has_entitiesbooleanhas_entities

data.statistics.statistics Fields

FieldTypeDescription
question_countintegerquestion_count
not_recommended_countintegernot_recommended_count
reviews_with_videos_countintegerreviews_with_videos_count
recommended_percentageintegerrecommended_percentage
ratingobjectrating
review_countintegerreview_count
recommended_countintegerrecommended_count
reviews_with_images_countintegerreviews_with_images_count
calculated_atstringcalculated_at
incentivized_countintegerincentivized_count

imgs supports Best Buy CA imageUrl and Judge.me original. photos retains original image objects and sizes. Unavailable ratings and dates remain null.

Continue using data.pagination.nextPage until null. Deduplicate reviews across pages using reviewId.

Errors retain the response envelope and data.error. Codes: invalid parameters 1002, rate limit 4029, busy 5001, collection failure 9200. HTTP 503 cooldown responses retain Retry-After.

Request Example

curl --request POST \
  --url https://scrapeapi.pangolinfo.com/api/v1/ecommerce/target/reviews \
  --header 'Authorization: Bearer YOUR_PANGOLINFO_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "productId": "94409105"
}'

Response Example

This excerpt retains the first list item and shortens long text and URLs. pointCost is the charge for the complete response.

{
  "code": 0,
  "pointCost": 16.0,
  "data": {
    "country": "US",
    "pagination": {
      "nextPage": 2,
      "totalPages": 2,
      "pageSize": 20,
      "hasNext": true,
      "page": 1
    },
    "productId": "94409105",
    "query": {
      "includeRatings": true,
      "pageSize": 20,
      "page": 1,
      "sort": "newest"
    },
    "warnings": [
      "Live pagination can shift as reviews are added. Deduplicate by review ID and reconcile page 1."
    ],
    "store": "roborock",
    "totals": {
      "query": 35,
      "reported": 35,
      "returned": 20,
      "withText": 20
    },
    "platform": "target",
    "sourceUrl": "https://www.target.com/p/-/A-94409105",
    "provider": "target",
    "meta": {
      "cache": "miss",
      "stale": false,
      "ageSeconds": 0,
      "operationId": "36820a05-615b-44e7-a8d0-141ba6080f53",
      "upstreamAttempts": 1,
      "coalesced": false
    },
    "schemaFingerprint": "e7b38cfdbcbf1c18a976c9c370d506a38b1848c2a8465f42abdd1852eb37b0a1",
    "capturedAt": "2026-11-07T11:49:40.010Z",
    "productSummary": {
      "withTextCount": null,
      "reviewCount": 35,
      "averageRating": 4.47,
      "scope": "upstream_product_or_review_group",
      "warnings": [],
      "source": "Target statistics.rating; review_count is separate",
      "totalCount": 64,
      "countKind": "ratings",
      "starDistribution": {
        "1": 5,
        "2": 2,
        "3": 3,
        "4": 2,
        "5": 52
      }
    },
    "results": [
      {
        "date": "2026-09-27",
        "imgs": [],
        "merchantResponses": [],
        "syndication": {
          "isSyndicated": false
        },
        "star": "5.0",
        "author": "breanne",
        "actualProductId": "94409105",
        "videos": [],
        "language": null,
        "title": "Just Buy It Already",
        "photos": [],
        "content": "This is the best robot vacuum I’ve ever used! We tried a few of the popular brands and they all broke within a month. I get it. We’re hard on vacuums with ou...",
        "createdAt": "2026-09-27T01:20:00.000+00:00",
        "actualProductUrl": null,
        "purchased": true,
        "native": {
          "is_syndicated": false,
          "reviewer_attributes": [],
          "ClientResponseCount": 0,
          "submitted_at": "2026-09-27T01:20:00.000+00:00",
          "is_incentivized": false,
          "Rating": 5,
          "channel": "TARGET",
          "external_id": "42674445-68a6-5693-a61c-2e623dc2d70d",
          "videos": [],
          "SourceClient": "targetcom",
          "title": "Just Buy It Already",
          "photos": [],
          "feedback": {
            "inappropriate": 0,
            "helpful": 0,
            "unhelpful": 0
          },
          "Tcin": "94409105",
          "RatingRange": 5,
          "SecondaryRatingsOrder": [],
          "id": "aad5281c-747e-48fb-a5ef-7fadf07da9b4",
          "text": "This is the best robot vacuum I’ve ever used! We tried a few of the popular brands and they all broke within a month. I get it. We’re hard on vacuums with ou...",
          "ClientResponses": [],
          "modified_at": "2026-09-29T10:33:40.000+00:00",
          "IsRatingsOnly": false,
          "BadgesOrder": [
            "verifiedPurchaser"
          ],
          "author": {
            "nickname": "breanne",
            "external_id": "20014215788"
          },
          "is_verified": true,
          "Entities": [],
          "tags": [],
          "SecondaryRatings": {},
          "is_recommended": true,
          "Badges": {
            "verifiedPurchaser": {
              "ContentType": "REVIEW",
              "Id": "verifiedPurchaser",
              "BadgeType": "Custom"
            }
          },
          "status": "APPROVED"
        },
        "reviewId": "aad5281c-747e-48fb-a5ef-7fadf07da9b4"
      }
    ],
    "statistics": {
      "metadata": {
        "has_videos": true,
        "has_photos": true,
        "has_verified": true,
        "has_entities": true
      },
      "statistics": {
        "question_count": 29,
        "not_recommended_count": 2,
        "reviews_with_videos_count": 3,
        "recommended_percentage": 87,
        "rating": {
          "average": 4.47,
          "secondary_averages": [],
          "count": 64,
          "positive_percentage": 89,
          "distribution": {
            "1": 5,
            "2": 2,
            "3": 3,
            "4": 2,
            "5": 52
          }
        },
        "review_count": 35,
        "recommended_count": 14,
        "reviews_with_images_count": 8,
        "calculated_at": "2026-10-23T03:23:23.112Z",
        "incentivized_count": 0
      }
    }
  },
  "message": "ok"
}

Points Usage

0.8 points per unique review within the response.

Each successful call is billed independently, including cached responses. Errors and empty lists cost zero; pointCost reports the charge.