
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape Şikayetvar (Türkiye) brand complaints with full text, solved status, customer rating, brand replies, topics, hashtags and views. By brand, keyword search or URL. No login.
Get Türkiye's brand complaints from Şikayetvar as clean data: the full complaint text, solved status, the customer's rating, brand replies and the whole reply thread, topic, category, hashtags, views and upvotes. Search by brand, keyword or URL. No login and no browser: in our tests a run of 20 complaints took about 6 seconds, 1,000 took about 15 seconds and 10,000 about 70 seconds, for $1.50 per 1,000 complaints.
snippet for tables.isSolved, a readable status (solved, not solved, awaiting rating), the customer's 1–5 star customerRating and the site's satisfactionScore.brandAnswered, brandReplyCount, the first brandReply, and replies[] with every brand answer and customer follow-up in reading order, plus public comments[].topic, for example İade or Kargo), category and sub-category, complaint subjects and the site's hashtags.trendyol, a name like Türk Telekom, or a brand URL), and/or search complaints with keywords like kargo gecikmesi, and/or paste Şikayetvar URLs.0 = as many as the site lists).| Field | What it does |
|---|---|
brands | Brand slugs (trendyol), names (Türk Telekom), brand URLs or brand topics (trendyol/iade) |
searchQueries | Keyword search across every brand |
startUrls | Brand, topic, search, latest-complaints or single complaint URLs from sikayetvar.com |
maxComplaints | Complaints per brand, search or URL (default 20, 0 = all the site lists, up to 20,000 per list) |
complaintStatus | ALL, SOLVED, NOT_SOLVED, AWAITING_RATING |
timePeriod | ALL, LAST_HOUR, LAST_WEEK, LAST_MONTH, LAST_YEAR |
dateFrom, dateTo | Only complaints written in this window (YYYY-MM-DD, Türkiye time, or 7 days) |
brandKeyword | Only the brands' complaints that match a word or phrase |
sortBy | NEWEST, MOST_VIEWED, MOST_UPVOTED, MOST_COMMENTED, POPULAR |
includeReplies | Add the reply thread, first brand reply and comments (on by default) |
{
"brands": ["trendyol", "turkcell"],
"searchQueries": ["kargo gecikmesi"],
"maxComplaints": 50,
"complaintStatus": "ALL",
"timePeriod": "LAST_MONTH",
"sortBy": "NEWEST",
"includeReplies": true
}
One row per complaint. The Complaints view shows brand, title, date, status, rating, brand reply, views, topic and link; the Full text view shows the complaint and the first brand reply side by side.
| Field | Description |
|---|---|
complaintId, url, slug | Complaint id and link |
title, body, snippet | Headline, full text, first 200 characters |
brand, brandName, brandId, brandUrl | The brand the complaint is about |
topic, topicUrl, topicLabel | Brand topic (for example İade, Kargo) |
category, subCategory, subjects, hashtags | Site taxonomy and tags |
date, createdAt, publishedAt | Date written (Türkiye time) and UTC timestamps |
authorName, authorId, authorUrl, authorCity | Public member profile (first name only, as the site shows it) |
isSolved, status, resolveStatus | Outcome: solved, not solved, awaiting rating (and the site's raw code) |
customerRating, satisfactionScore | The customer's 1–5 star rating and the site's score |
brandAnswered, brandReplyCount, brandReply | Whether and how the brand replied |
replies[], replyCount, comments[], commentCount | The thread (from: brand or member) and public comments |
viewCount, uniqueViewCount, upvoteCount, thanked | Engagement |
images[], videos[], hasPhoto, hasVideo, isVideoComplaint | Attached media |
source, input, scrapedAt | Which input produced the row and when |
Example (trimmed; the author is fictional):
{
"complaintId": 37353939,
"url": "https://www.sikayetvar.com/turkcell/turkcellden-paket-yenileme-sozunun-tutulmamasi-ve-fazladan-ucret-talebi",
"title": "Turkcell'den Paket Yenileme Sözünün Tutulmaması Ve Fazladan Ücret Talebi",
"body": "Turkcell faturalı hattım için yaptığım paket yenileme işleminde mağduriyet yaşadım. Paketimin bitiş tarihinde Turkcell tarafından aranacağım ...",
"brand": "turkcell",
"brandName": "Turkcell",
"category": "İletişim Marka ve Firmaları",
"subCategory": "GSM Operatörleri",
"subjects": ["Web Sitesi", "Web Satış"],
"hashtags": ["paketler", "faturalı hat", "paket yenileme", "iptal etme"],
"date": "2026-10-21",
"createdAt": "2026-10-21T11:15:21Z",
"authorName": "Ayşe",
"authorUrl": "https://www.sikayetvar.com/uye/ayse-10000001",
"isSolved": true,
"status": "solved",
"resolveStatus": 1,
"customerRating": 4,
"satisfactionScore": 75,
"brandAnswered": true,
"brandReplyCount": 2,
"brandReply": "Değerli Müşterimiz,\n\nTalebinizle ilgili inceleme yaparak en kısa sürede size bilgi vereceğiz.\n\nSaygılarımızla,\nTurkcell",
"viewCount": 12,
"upvoteCount": 0,
"replyCount": 2,
"replies": [
{"from": "brand", "message": "Değerli Müşterimiz, Talebinizle ilgili inceleme yaparak ...", "createdAt": "2026-10-21T11:16:39Z"},
{"from": "brand", "message": "Değerli Müşterimiz, 21.10.2026 tarihinde talebinizle ilgili sizi aradık ...", "createdAt": "2026-10-21T12:21:41Z"}
],
"comments": [],
"source": "brand",
"input": "turkcell",
"scrapedAt": "2026-10-21T14:55:54.597Z"
}
You pay $1.50 per 1,000 complaints ($0.0015 per complaint saved), plus a small platform usage charge for compute and proxy traffic. 1,000 complaints ≈ $1.50 in total: our 1,000-complaint test run cost $1.5014, of which $0.0014 was platform usage (about 1 MB of proxy traffic). Inputs that return nothing, invalid inputs and failed pages are never charged, and you can cap any run with a maximum charge.
Is it legal to scrape Şikayetvar? The scraper reads only public complaint pages that anyone can open without an account. Complaints can contain personal data; you are responsible for using the data in line with KVKK, GDPR and the site's terms.
Do I need a login, cookies or a proxy? No login or cookies. Datacenter proxy exits are used by default; if the site ever blocks them, the run switches to Turkish residential exits on its own.
How many complaints can I get?
The site serves up to 200 pages per list. With 100 complaints per page that is up to 20,000 complaints per brand, search or URL. For more, split the work with filters: status, time period, sort order, a keyword, or brand topic URLs such as https://www.sikayetvar.com/trendyol/kargo.
Why is a field empty?
Fields are empty when the site has no value: customerRating stays empty until the customer rates the outcome, topic is empty for complaints not filed under a brand topic, and authorCity is only shown for some members.
Can I schedule it or use the API?
Yes. Schedule daily runs with timePeriod: "LAST_WEEK" or dateFrom: "1 day" to collect only new complaints, and read results through the API or integrations.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
brandsarrayOptionalBrands
Brands to scrape, newest complaints first. Each entry can be a Şikayetvar slug (trendyol), a brand page URL (https://www.sikayetvar.com/trendyol), a brand topic (trendyol/iade) or a brand name (Türk Telekom, turned into its slug).
searchQueriesarrayOptionalSearch complaints
Keyword searches across every brand on Şikayetvar, for example "kargo gecikmesi" or "iade alınmadı". Returns the newest matching complaints.
startUrlsarrayOptionalŞikayetvar URLs
Any sikayetvar.com list or complaint URL: brand pages, brand topic pages (https://www.sikayetvar.com/turkcell/fatura), search results (https://www.sikayetvar.com/arama?k=kargo), the latest complaints page, or single complaint pages. Filters in the URL (resolved=true, sortField, timePeriod) are kept.
maxComplaintsintegerOptionaldefault 20Max complaints per brand, search or URL
Complaints to save for each brand, search query or list URL. 0 = as many as the site lists (it serves up to 20,000 per list; use filters to reach others).
complaintStatusenumOptionaldefault "ALL"Complaint status
Solved = the customer marked it solved. Not solved = the customer rated the outcome and did not mark it solved. Awaiting rating = no customer rating yet (it may or may not have a brand reply).
timePeriodenumOptionaldefault "ALL"Time period
Only complaints from this recent period (the site's own filter).
dateFromstringOptionalComplaints from
Only complaints written on or after this date (YYYY-MM-DD, Türkiye time), or a relative value such as "7 days".
dateTostringOptionalComplaints until
Only complaints written on or before this date (YYYY-MM-DD, Türkiye time).
brandKeywordstringOptionalKeyword inside each brand
Only the brands' complaints that match this word or phrase, for example "kargo" or "iade" (the site's search inside a brand).
sortByenumOptionaldefault "NEWEST"Sort by
Order of the list. Newest first is the site's default; the others pick the most viewed, upvoted, commented or popular complaints.
includeRepliesbooleanOptionaldefault trueInclude reply thread and comments
Add the conversation under each complaint: brand replies and customer follow-ups (replies), the first brand reply (brandReply) and public comments. Off: smaller rows without them.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Datacenter exits by default. If the site blocks them, the run moves to Turkish residential exits on its own.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| complaintId | number | null | |
| url | string | |
| title | string | null | |
| body | string | null | |
| snippet | string | null | |
| brand | string | null | |
| brandName | string | null | |
| brandId | number | null | |
| brandUrl | string | null | |
| topic | string | null | |
| topicUrl | string | null | |
| topicLabel | string | null | |
| category | string | null | |
| subCategory | string | null | |
| subjects | array | |
| hashtags | array | |
| date | string | null | |
| createdAt | string | null | |
| publishedAt | string | null | |
| authorName | string | null | |
| authorId | number | null | |
| authorUrl | string | null | |
| authorCity | string | null | |
| isSolved | boolean | null | |
| status | string | null | |
| resolveStatus | number | null | |
| customerRating | number | null | |
| satisfactionScore | number | null | |
| brandAnswered | boolean | null | |
| brandReplyCount | number | null | |
| thanked | boolean | null | |
| viewCount | number | null | |
| uniqueViewCount | number | null | |
| upvoteCount | number | null | |
| commentCount | number | null | |
| replyCount | number | null | |
| hasPhoto | boolean | null | |
| hasVideo | boolean | null | |
| isVideoComplaint | boolean | null | |
| images | array | |
| videos | array | |
| isHidden | boolean | null | |
| language | string | null | |
| slug | string | null | |
| source | string | null | |
| input | string | null | |
| scrapedAt | string | null | |
| replies | array | null | |
| comments | array | null | |
| brandReply | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Complaint | One complaint saved, with full text, status, rating and the brand reply thread. | $0.0015 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/sikayetvar-scraper').call({
"brands": [
"trendyol"
],
"maxComplaints": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/sikayetvar-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/sikayetvar-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Newest complaints across all brands that mention 'kargo gecikmesi', with brand replies.
Complaints the customer marked solved, with star rating and the brand's reply thread.
A brand topic page sorted by views.
Keyword inside one brand, last month, without the reply thread.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.