Instahyre Scraper avatar

Instahyre Scraper

Pricing

$1.00 / 1,000 results

Go to Apify Store
Instahyre Scraper

Instahyre Scraper

Scrape public Instahyre jobs and company hiring counts. Export roles, skills, locations, employer details, descriptions, experience ranges, and recruiter information.

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

MLG Data

MLG Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Scrape Instahyre jobs, employer context, skills, locations, and optional public job details. Export Instahyre job data to CSV, JSON, or Excel for hiring research, job boards, and recurring market snapshots. This actor provides an Instahyre API alternative with structured results and a company hiring-count mode.

The actor reads public job listings. A standard run writes one row per job. Company mode writes one hiring profile per requested employer. No account or candidate profile is needed.

What data can you extract from Instahyre?

The search feed supplies role and employer fields. Turning on detail fetching adds the description, experience requirements, category, and public recruiter fields. Values are left empty when the source does not publish them.

FieldDescriptionExample
recordTypeRow kindjob
jobIdStable public role identifier432410
titlePublished job titleSenior Engineering Manager
candidateTitleAlternate title shown to candidatesSenior Engineering Manager
companyNameHiring employer nameA published employer name
companyIdPublic employer identifier20943
companyResourceUriEmployer resource path/api/v1/candidate_opportunity_employer/20943
companyLogoUrlPublic employer logo linkA media URL
companyTaglinePublic employer taglineA short statement
companyFoundedEmployer founding year, if present1868
employeeCountEmployer size value from the source1000
companyNotePublic employer profile summaryA short paragraph
isDiversityEmployerPublic diversity badge flagfalse
isFeaturedEmployerPublic featured badge flagfalse
locationsSplit location labels["Bangalore"]
locationsRawOriginal location labelBangalore
isRemoteWhether the location explicitly says remote or work from homefalse
skillsPublished skill tags["Architecture", "Python"]
acceptOutstationWhether outstation applicants are acceptedtrue
publicUrlPublic job pageA job URL
resourceUriSource job record path/api/v1/job_search/432410
descriptionPlain text from the public detail descriptionA job description
experienceMin, experienceMaxExperience range in years10, 14
jobCategoryPublished categorySoftware Engineering
jobFunctionsPublished function labels["Backend Development"]
jobTypeFull-time role or internshipfull_time
recruiterNamePublic recruiter nameA profile name
recruiterDesignationRecruiter roleA designation
recruiterProfileUrlPublic recruiter image linkA media URL
recruiterCompanyNameRecruiter's listed organizationA published name
isAgencyPostedWhether that organization differs from the hiring employertrue
agencyFunctionNamesFunctions covered by an agency recruiter["Backend Development"]
detailStatus, detailErrorDetail fetch result or a short failure reasonok
foundExact employer found in company modetrue
openRolesPublic count for a tracked employer185
functionBreakdownTop public function counts in company modeA name-to-count object
locationBreakdownTop public location counts in company modeA location-to-count object
warningReason a company was not confirmedA short message
changeTypeSnapshot, new, updated, unchanged, or confirmed removedunchanged
firstSeenAt, lastSeenAtUTC observation times; retained across monitoring runsISO timestamps
openRolesDeltaChange in a tracked employer count since its last run4
functionsStarted, functionsStoppedChanges among top function facetsA label array
locationsOpened, locationsClosedChanges among top location facetsA label array
firstTrackedAt, lastTrackedAtUTC observation times for a tracked employerISO timestamps
sourceSource domaininstahyre.com
scrapedAtUTC collection timeAn ISO timestamp

The optional details belong to each public job, not to a private candidate account. The recruiter fields are public listing metadata. The actor does not invent salary or posting dates when those are absent from the source.

How to scrape Instahyre

  1. Choose a job function or leave the function list empty to scan the general public feed.
  2. Add any job type, employer size, skill, keyword, location, company, or remote filters you need.
  3. Set maxItems and maxPages. Start with 35 results and two source pages while testing a new search.
  4. Enable includeDetails when descriptions, experience, and recruiter fields are needed.
  5. Run the actor and download the default dataset as JSON, CSV, or Excel.

To get a hiring count for named employers, enter their exact published names in trackCompanies. That switches the output to company profiles. Other search filters are ignored in that mode.

Input

ParameterTypeDefaultDescription
jobFunctionSlugsstring array[]Live public function slugs. Unknown slugs fail with a clear error.
jobTypeenumanyAny, full-time, or internship.
companySizeenumanySmall, medium, large, or any.
skillsstring array[]Match published skill tags. A single skill is also sent to the source filter.
skillMatchenumanyMatch any or all requested skills.
keywordsstring array[]Terms matched against role, employer, skill, and location text.
keywordMatchenumanyMatch any or all requested keywords.
locationsstring array[]Match public location labels.
remoteOnlybooleanfalseKeep explicitly remote roles.
companyNamesstring array[]Match employer names. One name also narrows the source request.
excludeKeywordsstring array[]Exclude rows containing any listed term.
diversityEmployersOnlybooleanfalseKeep employers with the public diversity badge.
includeDetailsbooleanfalseFetch a public detail record per candidate job.
excludeAgencyPostedbooleanfalseSkip agency-posted roles; requires details.
trackCompaniesstring array[]Return hiring-count profiles instead of jobs.
monitorModeenumsnapshotCurrent rows or changes since a complete prior scan.
emitBaselinebooleantrueEmit all rows on the first monitoring run.
includeUnchangedbooleanfalseInclude unchanged rows in monitoring output.
stateNamestringEmptyOptional stable name for a comparison state.
maxItemsinteger50Maximum rows saved to the dataset.
maxPagesinteger10Maximum public search pages read.
proxyConfigurationobjectEnabledProxy routing for source requests.

Example input for a focused job search:

{
"jobFunctionSlugs": ["backend-development"],
"skills": ["Python"],
"jobType": "full_time",
"maxItems": 35,
"maxPages": 3,
"includeDetails": true
}

The function slug is resolved against the current public taxonomy before search. The actor uses the source's job-function identifier, so an obsolete slug stops with an error instead of silently returning unrelated jobs. For several skills, the requested match rule is applied to the returned skill tags. Keywords, remote flags, and exclusion terms are checked on each row after retrieval.

Output example

This shortened item comes from a successful 35-job validation run. Employer identity and links are omitted from the excerpt; they are present in the saved dataset.

{
"recordType": "job",
"jobId": "432410",
"title": "Senior Engineering Manager",
"candidateTitle": "Senior Engineering Manager",
"locations": ["Bangalore"],
"locationsRaw": "Bangalore",
"isRemote": false,
"acceptOutstation": true,
"companyFounded": 1868,
"employeeCount": 1000,
"isDiversityEmployer": false,
"isFeaturedEmployer": false,
"source": "instahyre.com"
}

A successful detail-enabled validation run saved 35 rows. jobId, title, companyName, locationsRaw, skills, publicUrl, description, jobCategory, and detailStatus were populated in every row.

Company mode produces rows with recordType set to company_profile. Its openRoles value comes from the public search count for the requested name. The function and location breakdowns contain the top categories returned with that search. They are not a complete breakdown of every function and city.

Use cases

  • Job-board coverage: add current India-focused technology and business roles to a searchable feed with stable identifiers for deduplication.
  • Recruiting research: inspect the skills and locations associated with a function before writing outreach or sourcing plans.
  • Employer watchlists: request hiring counts for exact employer names on a schedule, then compare the rows across runs in your own database.
  • Location analysis: measure which public listings mention a city or explicitly advertise remote work within a defined search slice.
  • Role enrichment: add descriptions and experience ranges to a saved set of jobs when titles and skill tags are insufficient.
  • Agency review: use public recruiter organization fields to identify roles that appear to be posted by an agency.

Each saved job has a stable jobId. Store that ID when combining several searches so overlapping roles are counted once. A repeated search may include the same role because the public feed reflects currently active listings rather than a historical stream.

How much does it cost to scrape Instahyre?

The configured result price is $0.001 per saved row, or $1 per 1,000 results. A 35-row run corresponds to $0.035 in result charges; 500 rows correspond to $0.50; 2,000 rows correspond to $2.00. These examples use the configured result rate and exclude any separate account-level usage or proxy charges that may apply to your plan.

maxItems limits how many rows are saved and charged. Filtering can require the actor to scan more source rows than it saves. Detail fetching adds a source request per candidate role, so it can increase run time and infrastructure usage even when the saved-row count is the same. Company mode saves one row per requested company, subject to maxItems.

The actor writes a MARKET_SNAPSHOT record to its run's key-value store. It contains the public total job count for the final search page, top companies and locations, function counts, company-size counts, scanned-row count, and whether the page scan reached the end. This record is separate from the dataset rows.

Tips for best results

Start with a source-backed filter such as jobFunctionSlugs, jobType, or companySize. They reduce the source count before local matching. A single skill and a single company name also narrow the source request. When a single company name returns no exact-filter results, the actor scans the broader feed and applies the name locally.

Increase maxPages when local filters are selective. A remote-only search, for example, may need many source pages to find 50 matching jobs. The source accepts a requested limit but caps each page at 35 jobs; the actor follows the actual cap when advancing offsets. Ten pages can inspect up to 350 distinct rows before local filters are applied.

Leave includeDetails off for a fast overview. Turn it on for text descriptions, experience ranges, categories, and recruiter fields. Detail failures leave the base job row in the dataset with detailStatus set to failed and a short detailError. This makes a partial detail outage visible without discarding the search result.

Use an exact employer name for company profiles. The public company filter may treat partial names broadly. The actor confirms an exact match among the first 35 returned jobs before reporting that employer's count. If it cannot confirm a match there, found is false and warning explains the limitation. Repeated company runs use a persistent state to report openRolesDelta and changes among the top function and location facets.

Limits

The public feed is a current listing source. It does not consistently provide a posting date, salary, or a historical record of removed jobs. Monitoring compares collected snapshots rather than claiming a source posting date. Choose changes_only and keep the same stateName for repeated runs. A role is marked removed only after it is absent from two complete scans. Capped or incomplete scans do not advance the comparison state.

The search API caps each page at 35 jobs. maxPages is a safety cap, so a broad query can stop before the source's complete inventory has been scanned. MARKET_SNAPSHOT.sourcePagesComplete reports whether the scan reached the end. Reaching maxItems can also stop a scan early. The snapshot's public total is the source's count for its search filter; it is not the final count after local keyword, location, or remote checks.

Employer, description, recruiter, and skill fields reflect what the source currently exposes. Some may be absent or change without notice. Remote detection requires an explicit remote-style phrase in the location label; it does not infer remote work from the job description. The agency flag compares the public recruiter organization with the hiring employer name, which is a useful signal but can be affected by naming differences.

Source availability, rate limits, and proxy behavior can vary. Requests start through the configured proxy route; the shared fetch layer retries blocked requests and can escalate its proxy group when a challenge persists. Repeated access limits may slow or interrupt a run. There is no login flow, private candidate data, or access to application records.

Automation prompts

Use a short, explicit instruction when creating a recurring search:

Collect up to 35 backend-development jobs with Python in the skill tags. Include public detail records and save the dataset as JSON.

For an employer watchlist:

Return hiring-count profiles for these exact published employer names and compare their counts with the previous run.

These examples describe inputs the actor accepts. Persistent comparison state is kept under the selected state name.

FAQ

The actor reads public listing records without logging in. Follow the site's terms, applicable privacy law, and your own data-retention rules. Do not use recruiter details for unwanted contact or collect private candidate information.

Do I need to set a proxy?

The input enables proxy routing by default. You can supply a different supported proxy configuration if your account requires it. A blocked request can trigger retries and a proxy escalation, which may affect account usage.

How fast is a run?

The validated 35-job search completed successfully. Larger searches depend on the number of pages, filter selectivity, and whether details are enabled. Detail mode makes one additional public request for each candidate job, so it usually takes longer than a list-only run.

Can I schedule a run to monitor hiring?

Yes. Select changes_only, keep the same filters and stateName, and schedule repeated runs. The first run can emit the baseline as new rows. Later complete scans emit new and updated roles; unchanged rows are optional. Removal requires absence from two complete scans. Company mode reports hiring-count changes from its previous run.

Can I export results to a spreadsheet?

Yes. Download the default dataset in CSV or Excel format, or connect its dataset endpoint to a spreadsheet workflow. Arrays such as skills and locations may be serialized as cell text in tabular exports.

Why is a field empty?

The public source may not publish that value. Description, experience, recruiter, and agency fields appear only when includeDetails is enabled and the detail request succeeds. A failed detail request leaves the list row intact with a visible status.

Why did a filtered run return fewer rows than maxItems?

maxItems is a ceiling. The public source may have fewer matching jobs, or local filters may reject many scanned rows before maxPages is reached. Raise maxPages, choose a broader source filter, or relax keyword and location terms.

Integrations

Use the dataset endpoint in an application, scheduled data pipeline, webhook workflow, or spreadsheet import. Stable job IDs help with deduplication and snapshot comparisons. A named monitoring state supports recurring change reports. The per-run MARKET_SNAPSHOT record gives the source's high-level counts alongside the exported rows.

Support

Open an issue on the Issues tab with the input that produced the problem and a short description of the expected fields. Include the run ID when reporting an incomplete or blocked scan.