How It Works
π System Flow
Complete step-by-step guide to using the ReviewData Lite API
This guide walks you through the complete flow of using the ReviewData Lite API, from getting your API key to receiving and processing review data.
π Overviewβ
The ReviewData Lite API follows a 5-step process:
- π Get Your API Key - Request and receive your authentication credentials
- π Setup Webhooks - Configure notifications for when your requests complete
- π€ Submit Review Request - Send business data to start review collection
- π Receive Webhook Notifications - When your request completes, you'll receive a webhook notification
- π₯ Retrieve Review Data - Download the collected review data
Step 1: Get Your API Key πβ
Request API Keyβ
Visit our API key request page to get started:
What Happens Nextβ
- You'll receive an onboarding email containing your unique API key
- This API key will be used for all subsequent API requests
- Keep your API key secure and don't share it publicly
Step 2: Setup Webhooks πβ
Why Webhooks?β
Webhooks notify you when your review collection requests are completed, so you don't need to constantly poll the API for status updates.
Configure Webhook Endpointβ
Endpoint: POST https://data.reviewdata.ai/webhooks/create-webhook/
Request Payload:
{
"api_key": "YOUR_API_KEY_HERE",
"webhook": "https://webhook.site/28facfba-ae3f-40a1-8730-f69ea2ad2c4a"
}
Parameters:
api_key
: Your API key received in the onboarding emailwebhook
: The URL where you want to receive notifications (must be accessible from the internet)
Response:
{
"webhook": "https://webhook.site/28facfba-ae3f-40a1-8730-f69ea2ad2c4a",
"status": "success"
}
Webhook Implementation Tipsβ
- Ensure your webhook endpoint can handle POST requests
- Return a 200 status code to acknowledge receipt
- Implement proper error handling for webhook failures
- Consider implementing webhook signature verification for security
Step 3: Submit Review Request π€β
Endpointβ
POST https://data.reviewdata.ai/submit/request-reviews/
Request Payload Structureβ
{
"job": "App\\Jobs\\RequestReviews",
"data": {
"lazy": true,
"api_key": "YOUR_API_KEY_HERE",
"business": {
"id": "unique_business_id",
"name": "Business Name",
"tags": ["tag1", "tag2"],
"phone": "+1234567890",
"address": {
"zip": "12345",
"city": "City Name",
"state": "State",
"street": "Street Address",
"country": "Country"
},
"description": "Business description"
},
"publishers": {
"maps.google.com": {
"profile_key": "https://maps.google.com/...",
"first_page_only": false,
"last_review_hashes": []
}
},
"foreign_key": "your_unique_identifier"
}
}
Each API request can only target ONE review platform at a time.
This means:
- β Single request: Get reviews from Google Maps for McDonald's
- β NOT allowed: Get reviews from Google Maps + Yelp + TripAdvisor for McDonald's in one request
For multiple platforms, submit separate requests:
- Request 1: McDonald's reviews from Google Maps
- Request 2: McDonald's reviews from Yelp
- Request 3: McDonald's reviews from TripAdvisor
Example: If you want review data from 5 different platforms (Google Maps, Yelp, TripAdvisor, Facebook, etc.) for the same business location, you must submit 5 separate API requests.
What is a Profile Key? The profile_key
is the direct URL to your business on a review platform (e.g., your Google Maps listing URL, Yelp business page URL).
Cost Impact:
- π’ Provide the profile_key = Standard pricing (you pay only for review data extraction)
- π΄ Don't provide profile_key = Standard pricing + extra business search fee
How it works:
- β With profile_key: You give us the exact business URL β We extract reviews β You pay standard rate
- β Without profile_key: You give us business name/address β We find your business URL β We extract reviews β You pay standard rate + search fee
π° Save Money: Always include the profile_key
in your requests and save it for future use to avoid the additional search costs.
Key Parameters Explainedβ
Business Objectβ
id
: Unique identifier for the business in your systemname
: Business nametags
: Optional array of business categoriesphone
: Business phone numberaddress
: Complete address informationdescription
: Optional business description
Publishers Objectβ
Configure which review sites to collect from:
Google Maps Example:
"maps.google.com": {
"profile_key": "https://www.google.com/maps/place/...",
"first_page_only": false,
"last_review_hashes": []
}
Yelp Example:
"yelp.com": {
"profile_key": "https://www.yelp.com/biz/...",
"first_page_only": true,
"last_review_hashes": []
}
TripAdvisor Example:
"tripadvisor.com": {
"profile_key": "https://www.tripadvisor.com/...",
"first_page_only": true,
"last_review_hashes": []
}
Publisher Parametersβ
profile_key
: Direct URL to the business profile (optional - system can find it)first_page_only
:true
for first page only,false
for all reviewslast_review_hashes
: Array of review hashes to avoid duplicates
Other Parametersβ
lazy
: Set totrue
for large review collections (longer processing time)foreign_key
: Your unique identifier to track this requestapi_key
: Your authentication key
Responseβ
{
"status": "success",
"tasks_id": "900e2ff4-2d25-4576-ab18-b9b8e73c0bd6",
"request_id": "9f9d2b5a-085c-4df3-bcca-20928f086925",
"foreign_key": "TEST_1751004113518_i6yxcl",
"publisher_key": "maps.google.com",
}
Response Fields:
status
: Request submission statusrequest_id
: Unique identifier for trackingtasks_id
: Unique task identifierforeign_key
: Your original request identifierpublisher_key
: Review site that was processed
Step 4: Receive Webhook Notifications πβ
Webhook Payload Structureβ
When your request completes, you'll receive a webhook notification:
{
"task_id": "900e2ff4-2d25-4576-ab18-b9b8e73c0bd6",
"publisher_key": "maps.google.com",
"foreign_key": "TEST_1751004113518_i6yxcl",
"profile_key": "https://www.google.com/maps/place/@40.7094789,-74.0126167,886m/data=!3m2!1e3!5s0x89c2592f4977ef97:0xf78d57398ac93494!4m7!3m6!1s0x89c25a177d4bf5db:0x84e51f23e8c0a75c!8m2!3d40.7094789!4d-74.0100364!10e1!16s%2Fg%2F1thtf190!5m1!1e1?entry=ttu&g_ep=EgoyMDI1MDY",
"task_status": 200,
"reviews_urls": [
"https://prod-data-only-client.s3.amazonaws.com/Review_URLs/9f9d2b5a-085c-4df3-bcca-20928f086925/900e2ff4-2d25-4576-ab18-b9b8e73c0bd6_0.jl"
]
}
Webhook Fields Explainedβ
task_id
: Unique task identifierpublisher
: Review site that was processedforeign_key
: Your original request identifierprofile_key
: Business profile URL usedtask_status
: HTTP status code (200 = success)reviews_urls
: URLs where review data is stored
Step 5: Retrieve Review Data π₯β
Endpointβ
POST https://data.reviewdata.ai/retrieve-task/
Request Payloadβ
{
"api_key": "YOUR_API_KEY_HERE",
"page": 1,
"page_size": 10,
"task_id": "your_task_id",
"foreign_key": "your_unique_identifier",
"publisher_key": "publisher_name"
}
Parametersβ
api_key
: Your authentication keyforeign_key
: The identifier you used in the original requestpublisher_key
: The review site (e.g., "maps.google.com")page
: Page number for paginationpage_size
: Number of reviews per pagetask_id
: You will get this task_id on submitting the request for reviews
Response Structureβ
{
"foreign_key": "TEST_1751004113518_i6yxcl",
"batch_id": "TEST_1751004113518_i6yxcl",
"task_id": "900e2ff4-2d25-4576-ab18-b9b8e73c0bd6",
"related_task_ids": [],
"task_status": 200,
"business": {
"publisher": "maps.google.com",
"profile_key": "https://www.google.com/maps/place/@40.7094789,-74.0126167,886m/data=!3m2!1e3!5s0x89c2592f4977ef97:0xf78d57398ac93494!4m7!3m6!1s0x89c25a177d4bf5db:0x84e51f23e8c0a75c!8m2!3d40.7094789!4d-74.0100364!10e1!16s%2Fg%2F1thtf190!5m1!1e1?entry=ttu&g_ep=EgoyMDI1MDY",
"reviews_urls": [
"https://prod-data-only-client.s3.amazonaws.com/Review_URLs/9f9d2b5a-085c-4df3-bcca-20928f086925/900e2ff4-2d25-4576-ab18-b9b8e73c0bd6_0.jl"
],
"id": "restaurant_001",
"name": "McDonald's",
"tags": [
"restaurant",
"pizza",
"italian",
"casual"
],
"phone": "+12123852066",
"address": {
"zip": "10038",
"city": "New York",
"state": "NY",
"street": "160 Broadway",
"country": "USA"
},
"description": "Classic, long-running fast-food chain known for its burgers & fries."
},
"reviews": [
{
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT25wVFEzWkxPR1ZJYkdWS04zWjNlWEo2ZW01UVZGRRAB",
"author_name": "Regimorais Raab",
"author_id": null,
"rating": 5,
"text": "Rapidez incrΓvel",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT25wVFEzWkxPR1ZJYkdWS04zWjNlWEo2ZW01UVZGRRAB!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CAIQACodChtycF9oOnpTQ3ZLOGVIbGVKN3Z3eXJ6em5QVFE%7C0cLUo1-b2qC%7C?hl=en",
"posted_at": 1750727938010,
"review_hash": "f2601fda3fb2e249204ff97d9710acd7",
"language": "en"
},
{
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT2pFeFEzSXpjVW8zZUdkalFYQkRiR2hSV2xWdVIzYxAB",
"author_name": "gloria schuweiler",
"author_id": null,
"rating": 3,
"text": "Some how they been getting my order wrong.",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2pFeFEzSXpjVW8zZUdkalFYQkRiR2hSV2xWdVIzYxAB!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CAIQACodChtycF9oOjExQ3IzcUo3eGdjQXBDbGhRWlVuR3c%7C0cLP3KjBeBa%7C?hl=en",
"posted_at": 1750704405791,
"review_hash": "3de49930bb5221fce5bb352146649726",
"language": "en"
},
{
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT2t0bVYyODNNRUo2VWxCMVVGcGhRVGxtYzBKNUxXYxAB",
"author_name": "Zadran Akram khan",
"author_id": null,
"rating": 2,
"text": "Happy Wellcomen New And Last Chef Akram Zadran",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2t0bVYyODNNRUo2VWxCMVVGcGhRVGxtYzBKNUxXYxAB!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CAIQACodChtycF9oOktmV283MEJ6UlB1UFphQTlmc0J5LWc%7C0cKzlVRIta5%7C?hl=en",
"posted_at": 1750596704474,
"review_hash": "c11d5ca37c28d429beb161013fdd2c3d",
"language": "en"
},
{
"review_id": "ChZDSUhNMG9nS0VLUHNodGJuc18ycFR3EAE",
"author_name": "Ivana Donev",
"author_id": null,
"rating": 4,
"text": "",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VLUHNodGJuc18ycFR3EAE!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CIHM0ogKEKPshtbns_2pTw%7CCgwI8oq2wgYQsPr9wQE%7C?hl=en",
"posted_at": 1749910898406,
"review_hash": "d7f32bfcdd9e46b23f04b2d69e1fe373",
"language": "en"
},
{
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT214TVVHTjNWMkZzVjFSMlQzQmhSMVoyYWtKZmRuYxAB",
"author_name": "Ludovic Pagès",
"author_id": null,
"rating": 2,
"text": "C'est dΓ©jΓ le bas du panier en France, ben ce n'est pas mieux sur Broadway Γ Wall Street. Je ne comprends pas pour quoi Γ§a existe encore. Pour le reste ce resto a un service rapide et des toilettes propres.",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT214TVVHTjNWMkZzVjFSMlQzQmhSMVoyYWtKZmRuYxAB!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CAIQACodChtycF9oOmxMUGN3V2FsV1R2T3BhR1Z2akJfdnc%7C0cI7yCrlChX%7C?hl=en",
"posted_at": 1749847949935,
"review_hash": "56848456ebc3393b5aa98a3134242221",
"language": "en"
},
{
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT20xS1UyWjRNR2hLTUdRd2RERmlVVXd4VDFOblgyYxAB",
"author_name": "Aaron Moore",
"author_id": null,
"rating": 5,
"text": "",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT20xS1UyWjRNR2hLTUdRd2RERmlVVXd4VDFOblgyYxAB!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CAIQACodChtycF9oOm1KU2Z4MGhKMGQwdDFiUUwxT1NnX2c%7C0cI4FOfmJHX%7C?hl=en",
"posted_at": 1749832729734,
"review_hash": "ce4e8f08dbe2fda5d996cf906b553450",
"language": "en"
},
{
"review_id": "ChZDSUhNMG9nS0VQX3FpdmVkMHBhSlNREAE",
"author_name": "Cevdet S A",
"author_id": null,
"rating": 5,
"text": "Like it.",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VQX3FpdmVkMHBhSlNREAE!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CIHM0ogKEP_qived0paJSQ%7CCgsI5p2pwgYQqMTXfA%7C?hl=en",
"posted_at": 1749700326261,
"review_hash": "433aa5e69074d92921cdac0b848ec3fd",
"language": "en"
},
{
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT2pZelVUQTVVRkp3YVhGa1lUTlBVVk42VWxGcE9GRRAB",
"author_name": "Vinod Sukhadia",
"author_id": null,
"rating": 5,
"text": "",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2pZelVUQTVVRkp3YVhGa1lUTlBVVk42VWxGcE9GRRAB!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CAIQACodChtycF9oOjYzUTA5UFJwaXFkYTNPUVN6UlFpOFE%7C0cHNU251Vof%7C?hl=en",
"posted_at": 1749649347101,
"review_hash": "aa0b25c137f7b386a6d392f91b54b5e0",
"language": "en"
},
{
"review_id": "ChZDSUhNMG9nS0VPM0E4N2k4a2V6SEJ3EAE",
"author_name": "Husnain Ali",
"author_id": null,
"rating": 4,
"text": "",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VPM0E4N2k4a2V6SEJ3EAE!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CIHM0ogKEO3A87i8kezHBw%7CCgwI4c2jwgYQ2Mjj1wE%7C?hl=en",
"posted_at": 1749608161452,
"review_hash": "b7e33c65de9262919ad22741f0554832",
"language": "en"
},
{
"review_id": "ChdDSUhNMG9nS0VJQ0FnSURwX3QtdHJBRRAB",
"author_name": "Fred Alluso",
"author_id": null,
"rating": 4,
"text": "Clean, noisy, crowded. Most importantly they didn't mess up my coffee order.",
"url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChdDSUhNMG9nS0VJQ0FnSURwX3QtdHJBRRAB!2m1!1s0x0:0x84e51f23e8c0a75c!3m1!1s2@1:CIHM0ogKEICAgIDp_t-trAE%7C0cMTWPpdFWz%7C?hl=en",
"posted_at": 1692756313115,
"review_hash": "924067883b209b62d4ffd556179d9634",
"language": "en"
}
],
"pagination": {
"total_reviews": 11820,
"page": 1,
"page_size": 10,
"total_pages": 1182,
"has_next": true,
"has_previous": false
}
}
Review Data Fieldsβ
review_id
: Unique review identifierauthor_name
: Reviewer's nameauthor_id
: Reviewer's unique IDrating
: Review rating (1-5)text
: Review contenturl
: Direct link to the reviewposted_at
: Unix timestamp when review was posted (In UTC)review_hash
: Unique hash for deduplicationlanguage
: Review language code
π Complete Flow Diagramβ
1. Request API Key
β
2. Setup Webhook
β
3. Submit Review Request
β
4. System Processes Request
β
5. Webhook Notification Sent
β
6. Retrieve Review Data
β
7. Process & Use Data
π― Best Practicesβ
Performance Optimizationβ
- Use
lazy: true
for businesses with many reviews - Implement proper pagination to handle large datasets
- Store
review_hash
values to avoid duplicate collection
Error Handlingβ
- Always check response status codes
- Implement webhook retry logic
- Handle API rate limits gracefully
Data Managementβ
- Store
profile_key
URLs to avoid business matching costs - Use meaningful
foreign_key
values for easy tracking - Implement proper data validation before submission
Securityβ
- Keep API keys secure and rotate regularly
- Validate webhook signatures if implemented
- Use HTTPS for all webhook endpoints
π Next Stepsβ
Now that you understand the complete flow:
- Get Started β - Learn about authentication
- API Endpoints β - Detailed endpoint documentation
- Examples β - See real-world examples
- Try Playground β - Test the API interactively
Need help? Check out our error codes or contact support.