Get candidate interview reports
Return candidate-reported interview experiences at one company: the role interviewed for, the location, how difficult the candidate found it, whether they rated the experience positive, the outcome (offer accepted, offer declined, no offer), their written account of the process, how they got the interview, how many days it took end to end, and the questions they were asked. Walk several pages in one request with pages, or resume with cursor. This is the surface that tells you what a competitor's hiring loop actually looks like from the candidate's side.
/interview-reports Interviews https://api.fetchlayer.dev/glassdoor/interview-reports Headers
Authorization string required Bearer token — your FetchLayer API key.
Parameters
company string required Glassdoor company id, or any Glassdoor URL containing one. Use /search-companies to turn a name into an id.
limit number optional Maximum interview reports returned (max 1000), or -1 for everything available. (default: 30)
pages number optional Pages of results to collect in one request (max 100), or -1 for the maximum allowed. Each page counts as one request against your plan. (default: 1)
cursor string optional Resume from a previous response's nextCursor.
delayMs number optional Milliseconds to wait between pages (max 30000).
Response Fields
interview-reports
Get candidate interview reports
employerId string The company these interviews were at.
companyName string | null Company name as published.
interviews object[] The collected interview reports.
interviews[].interviewId string Stable id for the report — the key to dedupe on across runs.
interviews[].jobTitle string | null Role the candidate interviewed for.
interviews[].location string | null Where the interview happened, at the granularity in locationType.
interviews[].difficulty string | null How hard the candidate found it, for example AVERAGE or VERY_DIFFICULT.
interviews[].experience string | null How they rated the experience: POSITIVE, NEUTRAL or NEGATIVE.
interviews[].outcome string | null The result: ACCEPT_OFFER, DECLINE_OFFER or NO_OFFER.
interviews[].processDescription string | null The candidate's own account of the interview process.
interviews[].source string | null How they got the interview, for example APPLIED_ONLINE or RECRUITER.
interviews[].durationDays number | null Days the process took, as reported — the number to benchmark your own loop against.
interviews[].interviewedAt string | null When the interview took place.
interviews[].questions object[] Questions the candidate was asked, each with its text and how many public answers it has.
interviewCount number Interview reports in this response.
pagesScraped number Pages actually collected. Each one counts as a request against your plan.
pagesRequested number Pages the request asked for. Lower than pagesScraped means the listing ran out.
nextCursor string | null Pass back as cursor to continue, or null when the listing is exhausted.
hasNextPage boolean Whether more results exist beyond this response.
requestedUrl string The Glassdoor page this result corresponds to.
scrapedAt string When the page was collected, as an ISO 8601 timestamp.
notes string[] Plain-language caveats about this particular result — a walk that stopped short, a listing with more pages, an upstream limit that was hit. Read it: a well-formed response can still be incomplete, and this is where that is said.
blocked boolean Always false on a successful response.
Request
curl -X POST "https://api.fetchlayer.dev/glassdoor/interview-reports" \
-H "Authorization: Bearer ss-your-key" \
-H "Content-Type: application/json" \
-d '{"company":"671954","pages":2,"limit":40}'Response
{
"employerId": "671954",
"companyName": "Stripe",
"interviewCount": 20,
"pagesScraped": 2,
"pagesRequested": 2,
"hasNextPage": true,
"nextCursor": "eyJwYWdlIjozfQ==",
"interviews": [
{
"interviewId": "5512094",
"jobTitle": "Backend Engineer",
"location": "Remote",
"difficulty": "DIFFICULT",
"experience": "POSITIVE",
"outcome": "ACCEPT_OFFER",
"source": "APPLIED_ONLINE",
"durationDays": 28,
"interviewedAt": "2026-06-11",
"questions": [
{
"question": "Design a rate limiter for an idempotent payments API.",
"answerCount": 4
}
]
}
],
"notes": []
}