<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Black Falcon Data</title>
    <description>The latest articles on DEV Community by Black Falcon Data (@blackfalcondata).</description>
    <link>https://dev.to/blackfalcondata</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4086958%2F4974026f-4e57-48a3-bc32-b13c165f2b86.png</url>
      <title>DEV Community: Black Falcon Data</title>
      <link>https://dev.to/blackfalcondata</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/blackfalcondata"/>
    <language>en</language>
    <item>
      <title>Trustpilot API schema: fields, filters, and what is missing</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 23:33:10 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/trustpilot-api-pull-96-fields-per-record-without-an-official-endpoint-4kmi</link>
      <guid>https://dev.to/blackfalcondata/trustpilot-api-pull-96-fields-per-record-without-an-official-endpoint-4kmi</guid>
      <description>&lt;p&gt;The Trustpilot API is best evaluated through its schema. Below are all 96 fields, organized by what they describe, along with the filters that narrow a run before it costs anything.&lt;/p&gt;

&lt;p&gt;Here is what our own Trustpilot Actor returns, what it costs, and where its coverage ends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Each record contains &lt;strong&gt;96 fields&lt;/strong&gt;, divided into these groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;company&lt;/strong&gt; — companyDomain, companyName, companyTrustScore, companyStars, companyTotalReviews, companyWebsite, companyIsClaimed, companyCategories, companyCity, companyCountry, companyContactEmail, companyContactPhone, +31 more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;is&lt;/strong&gt; — isVerified, isComplaint, isFiltered, isPending, isRepost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;reviewer&lt;/strong&gt; — reviewerName, reviewerCountry, reviewerTotalReviews, reviewerIsVerified, reviewerImageUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;review&lt;/strong&gt; — reviewId, reviewUrl, reviewSource, reviewSourceName&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;reply&lt;/strong&gt; — replyText, replyDate, replyUpdatedDate, replyDelayDays&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;language&lt;/strong&gt; — language, languageDistribution&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;verification&lt;/strong&gt; — verificationLevel, verificationSource&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;reviews&lt;/strong&gt; — reviewsOnSameDomain, reviewsOnSameLocation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;has&lt;/strong&gt; — hasCompanyReply, hasUnhandledReports&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are the first fields from one row in a real dataset:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"review"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"reviewId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"6a8b92e1f308e437698f500f"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"reviewUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.trustpilot.com/reviews/6a8b92e1f308e437698f500f"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyDomain"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"booking.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Booking.com"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"rating"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Leaving people stranded in airports is..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Leaving people stranded in airports is atrocious. "&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"contentHash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"47a65723c28306618b3373155d889d04c9b1b73f7c9581b1c6a2a48fcdc9c32c"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"language"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"en"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"reviewSource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Organic"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"likes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"publishedDate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-08-24T02:40:01.000Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"experiencedDate"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-08-05T00:00:00.000Z"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input accepts 51 options, including &lt;code&gt;mode&lt;/code&gt;, &lt;code&gt;companyDomain&lt;/code&gt;, &lt;code&gt;companyDomains&lt;/code&gt;, &lt;code&gt;companyName&lt;/code&gt;, &lt;code&gt;startUrls&lt;/code&gt;, &lt;code&gt;searchQuery&lt;/code&gt;, &lt;code&gt;searchCountry&lt;/code&gt;, &lt;code&gt;searchMaxPages&lt;/code&gt;, &lt;code&gt;categoryUrl&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;stars&lt;/code&gt;, &lt;code&gt;languages&lt;/code&gt;, &lt;code&gt;date&lt;/code&gt;, &lt;code&gt;lookbackDays&lt;/code&gt;, &lt;code&gt;topics&lt;/code&gt;, &lt;code&gt;verified&lt;/code&gt;, &lt;code&gt;withReplies&lt;/code&gt;, &lt;code&gt;sort&lt;/code&gt;, &lt;code&gt;countryOfReviewer&lt;/code&gt;, &lt;code&gt;search&lt;/code&gt;, and more.&lt;/p&gt;

&lt;p&gt;These filters run server-side. You pay for the records you requested instead of producing a larger dataset and filtering it afterwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.005 per actor start&lt;/li&gt;
&lt;li&gt;$0.00025 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a measured run, not an estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;25 records&lt;/strong&gt; in &lt;strong&gt;2.9 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00035&lt;/strong&gt; — about $0.01 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reputation monitoring.&lt;/strong&gt; Ratings and review text reveal movement over time that a single page view cannot show.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields let you isolate the relevant segment before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps make it possible to diff runs and act on new records instead of re-reading everything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields allow market-by-market comparisons without another data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The honest caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty field means the source showed nothing. Values are never inferred or filled in from elsewhere.&lt;/li&gt;
&lt;li&gt;The schema follows Trustpilot's markup. A redesign can add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;Anything Trustpilot puts behind a login is absent from every field below, by design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Coverage and behavior
&lt;/h2&gt;

&lt;p&gt;Not every field is populated. Fields are not guessed: when the source leaves one blank, it comes back blank. An empty value therefore means Trustpilot did not show one, not that extraction failed.&lt;/p&gt;

&lt;p&gt;For market-specific runs, &lt;code&gt;searchCountry&lt;/code&gt; narrows the request before any records are produced. You pay for the market you requested instead of filtering the results afterwards.&lt;/p&gt;

&lt;p&gt;The source-level filters include &lt;code&gt;searchMaxPages&lt;/code&gt;, &lt;code&gt;categoryUrl&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, and &lt;code&gt;date&lt;/code&gt;. This affects cost as well as convenience. Filtered-out records are never produced, so they are never billed.&lt;/p&gt;

&lt;p&gt;Every run reads Trustpilot when it runs, with no cached copy in between. Two runs a week apart provide two snapshots, enabling change detection.&lt;/p&gt;

&lt;p&gt;To fetch only recent changes, use &lt;code&gt;lookbackDays&lt;/code&gt;. Without it, a re-run returns the full set again, leaving deduplication to your side.&lt;/p&gt;

&lt;p&gt;There is no public bulk export or API. The field list above comes from parsing pages rather than a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these fields match your requirements, &lt;a href="https://apify.com/blackfalcondata/trustpilot-reviews-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Trustpilot API, maintained against the live site&lt;/a&gt; produces them. New accounts get $5 of free platform credit each month, enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.apify.com/platform/storage/dataset" rel="noopener noreferrer"&gt;dataset storage&lt;/a&gt; — how results are stored and exported&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/jobstreet-scraper/" rel="noopener noreferrer"&gt;Jobstreet API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/stepstone-de-scraper/" rel="noopener noreferrer"&gt;what the Stepstone API returns&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/autoscout24-scraper/" rel="noopener noreferrer"&gt;the Autoscout24 API, in the same detail&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/trustpilot-reviews-scraper/" rel="noopener noreferrer"&gt;our Trustpilot API guide&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>Autoscout24 API schema: fields, filters, and what is missing</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 23:28:05 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/autoscout24-api-pull-74-fields-per-record-without-an-official-endpoint-15cm</link>
      <guid>https://dev.to/blackfalcondata/autoscout24-api-pull-74-fields-per-record-without-an-official-endpoint-15cm</guid>
      <description>&lt;p&gt;An Autoscout24 record contains 74 fields. This page shows which are populated, which are optional, and what a real row looks like—the data the Autoscout24 API has to work with.&lt;/p&gt;

&lt;p&gt;It also covers what our own Autoscout24 Actor returns, what it costs, and where its limits are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Each record includes &lt;strong&gt;74 fields&lt;/strong&gt;, organized into several groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;seller&lt;/strong&gt; — sellerType, sellerName, sellerContact, sellerPhone, sellerRatingStars, sellerRatingCount&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;price&lt;/strong&gt; — price, priceFormatted, priceEur, priceNegotiable, priceEvaluation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;model&lt;/strong&gt; — model, modelGroup, modelVersion, modelCode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — description, descriptionHtml, descriptionMarkdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;body&lt;/strong&gt; — bodyType, bodyColor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;fuel&lt;/strong&gt; — fuelType, fuelConsumption&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;power&lt;/strong&gt; — powerKw, powerHp&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;number&lt;/strong&gt; — numberOfSeats, numberOfDoors&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;country&lt;/strong&gt; — country, countryVersion&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;emission&lt;/strong&gt; — emissionClass, emissionSticker&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;upholstery&lt;/strong&gt; — upholstery, upholsteryColor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a record as returned, shortened for readability:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"listingId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"7e13eedf-d415-4e9d-b20f-2590b1263ae3"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Volkswagen Passat Lim. Comfortline"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.autoscout24.com/offers/volkswagen-passat-lim-comfortline-diesel-black-cat_m..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"portalUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.autoscout24.com/offers/volkswagen-passat-lim-comfortline-diesel-black-cat_m..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Volkswagen"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Passat"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"modelGroup"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Passat"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"variant"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sedan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"modelVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Lim. Comfortline"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"bodyType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Sedan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"vehicleType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Car"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"condition"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Used"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"mileageKm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;245975&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"firstRegistration"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2006-08-01"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input accepts 43 options, including &lt;code&gt;make&lt;/code&gt;, &lt;code&gt;model&lt;/code&gt;, &lt;code&gt;countries&lt;/code&gt;, &lt;code&gt;priceFrom&lt;/code&gt;, &lt;code&gt;priceTo&lt;/code&gt;, &lt;code&gt;yearFrom&lt;/code&gt;, &lt;code&gt;yearTo&lt;/code&gt;, &lt;code&gt;mileageTo&lt;/code&gt;, &lt;code&gt;fuelType&lt;/code&gt;, &lt;code&gt;transmission&lt;/code&gt;, &lt;code&gt;bodyType&lt;/code&gt;, &lt;code&gt;condition&lt;/code&gt;, &lt;code&gt;searchUrls&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;includeDetails&lt;/code&gt;, &lt;code&gt;descriptionMaxLength&lt;/code&gt;, &lt;code&gt;compact&lt;/code&gt;, &lt;code&gt;incrementalMode&lt;/code&gt;, &lt;code&gt;stateKey&lt;/code&gt;, and more.&lt;/p&gt;

&lt;p&gt;Filters run server-side. You pay for the records requested, with no need to retrieve a larger set and filter it afterwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.005 per actor start&lt;/li&gt;
&lt;li&gt;$0.0008 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These figures come from a measured run, not an estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;300 records&lt;/strong&gt; in &lt;strong&gt;165.0 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00338&lt;/strong&gt; — about $0.01 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields allow comparisons across the whole set instead of relying on a page of results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reputation monitoring.&lt;/strong&gt; Tracking ratings and review text over time reveals movement that a single page view cannot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields help isolate the relevant segment before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps support run-to-run diffs, so teams can act on new data instead of re-reading everything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields enable market-by-market comparisons without a separate data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it will not do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty field means the source showed nothing. Values are never inferred or filled in from another source.&lt;/li&gt;
&lt;li&gt;The schema follows Autoscout24's markup. A redesign can add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;Anything Autoscout24 places behind a login is absent from every field below, by design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;Not every field is populated, and missing values are not guessed. When the source leaves a field blank, it comes back blank. An empty value therefore means Autoscout24 did not show one, rather than that extraction failed.&lt;/p&gt;

&lt;p&gt;Market coverage is controlled with &lt;code&gt;location&lt;/code&gt;. It narrows the run before records are produced, so you pay only for the requested market instead of filtering afterwards.&lt;/p&gt;

&lt;p&gt;The source-level filters include &lt;code&gt;fuelType&lt;/code&gt;, &lt;code&gt;bodyType&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;descriptionMaxLength&lt;/code&gt;. This affects cost as well as convenience: filtered-out records are never produced and therefore never billed.&lt;/p&gt;

&lt;p&gt;Every run reads Autoscout24 when it executes, with no cached copy in between. Two runs a week apart produce two snapshots, making change detection possible.&lt;/p&gt;

&lt;p&gt;For changed records only, use &lt;code&gt;incrementalMode&lt;/code&gt;. Without it, another run returns the full set, leaving deduplication to your side.&lt;/p&gt;

&lt;p&gt;There is no public bulk export or API. The field list above comes from parsing pages, not from a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these are the fields you need, &lt;a href="https://apify.com/blackfalcondata/autoscout24-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Autoscout24 API behind these fields&lt;/a&gt; produces them. New accounts receive $5 of free platform credit each month, enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/bayt-scraper/" rel="noopener noreferrer"&gt;Bayt API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/jobstreet-scraper/" rel="noopener noreferrer"&gt;the Jobstreet API, in the same detail&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/stepstone-de-scraper/" rel="noopener noreferrer"&gt;the Stepstone API field reference&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/autoscout24-scraper/" rel="noopener noreferrer"&gt;our write-up on the Autoscout24 API&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>Stepstone API data export: all 81 fields, grouped</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 23:23:00 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/stepstone-api-pull-81-fields-per-record-without-an-official-endpoint-175n</link>
      <guid>https://dev.to/blackfalcondata/stepstone-api-pull-81-fields-per-record-without-an-official-endpoint-175n</guid>
      <description>&lt;p&gt;A Stepstone record contains 81 fields. This page shows which are populated, which are optional, and what a real row looks like — the data the Stepstone API has to work with.&lt;/p&gt;

&lt;p&gt;It also covers what our own Stepstone Actor returns, how much it costs, and where its limits are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Each record includes &lt;strong&gt;81 fields&lt;/strong&gt;, divided into several groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;company&lt;/strong&gt; — company, companyId, companyLogo, companyUrl, companyWebsite, companyEmployees, companyIndustries, companyBenefits, companyAddress, companyRating&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;is&lt;/strong&gt; — isSponsored, isTopJob, isPartnershipJob, isAnonymous, isHighlighted, isRepost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;salary&lt;/strong&gt; — salaryText, salaryMin, salaryMax, salaryCurrency, salaryPeriod&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — description, descriptionHtml, descriptionMarkdown, descriptionLength&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contact&lt;/strong&gt; — contactName, contactEmail, contactPhone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;text&lt;/strong&gt; — textSections, textSnippet, textSnippetCleaned&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extracted&lt;/strong&gt; — extractedEmails, extractedPhones, extractedUrls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;apply&lt;/strong&gt; — applyEmail, applyUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;location&lt;/strong&gt; — location, locationDetail&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;work&lt;/strong&gt; — workFromHome, workFromHomeLabel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;publish&lt;/strong&gt; — publishFromDate, publishToDate&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;source&lt;/strong&gt; — sourceUrl, sourceDomain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;content&lt;/strong&gt; — contentQuality, contentHash&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a returned record, shortened for readability:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"f4dbe212ce1aaee33f980edd5cbaefbc63c87b29fd1be7fd7075724b72910573"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"harmonisedId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0a9b9217-5b2a-4e2e-9ff8-ce4980f4c082"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"legacyJobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;13817131&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Software Engineer Public Sector (all genders)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"msg systems ag"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5245&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyLogo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.stepstone.de/upload_DE/logo/1/logomsg-systems-gmbh-5245DE-2207011009.gif"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.stepstone.de/cmp/de/msg-systems-ag-5245/jobs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyWebsite"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyEmployees"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyIndustries"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyBenefits"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyAddress"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"contactName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input accepts 47 options, including &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;startUrls&lt;/code&gt;, &lt;code&gt;bundesland&lt;/code&gt;, &lt;code&gt;sort&lt;/code&gt;, &lt;code&gt;age&lt;/code&gt;, &lt;code&gt;remote&lt;/code&gt;, &lt;code&gt;radius&lt;/code&gt;, &lt;code&gt;minSalary&lt;/code&gt;, &lt;code&gt;contractType&lt;/code&gt;, &lt;code&gt;experience&lt;/code&gt;, &lt;code&gt;workType&lt;/code&gt;, &lt;code&gt;companyId&lt;/code&gt;, &lt;code&gt;language&lt;/code&gt;, &lt;code&gt;applicationMethod&lt;/code&gt;, &lt;code&gt;excludeSponsored&lt;/code&gt;, &lt;code&gt;includeDetails&lt;/code&gt;, &lt;code&gt;descriptionFormat&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;maxPages&lt;/code&gt;, and more. Because the filters run server-side, you pay only for the requested records instead of filtering them afterwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.005 per actor start&lt;/li&gt;
&lt;li&gt;$0.0015 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the results from a measured run, not an estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;25 records&lt;/strong&gt; in &lt;strong&gt;24.9 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.03&lt;/strong&gt; — about $1.12 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields support comparisons across the whole set instead of forcing you to eyeball a page of results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reputation monitoring.&lt;/strong&gt; Tracking ratings and review text over time reveals movement that one page view cannot show.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields help you isolate the relevant segment before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps allow you to diff runs and respond to new information instead of re-reading everything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields provide market-by-market comparisons without requiring a separate data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What it will not do
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty field means the source showed nothing. Values are never inferred or filled in from elsewhere.&lt;/li&gt;
&lt;li&gt;The schema follows Stepstone's markup. A redesign can therefore add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;By design, anything Stepstone places behind a login is absent from every field below.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Are all fields always populated?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No, and missing values are not guessed. When the source leaves a field blank, it comes back blank. An empty value means Stepstone did not show one, not that extraction failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which markets does it cover?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;location&lt;/code&gt; option narrows the run before any records are produced. You pay for the requested market instead of filtering afterwards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which filters are applied at the source?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;minSalary&lt;/code&gt;, &lt;code&gt;contractType&lt;/code&gt;, &lt;code&gt;workType&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt; run server-side. That affects cost as well as convenience: filtered-out records are never produced and therefore never billed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How fresh is the data?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every run reads Stepstone when it runs, with no cached copy in between. Running it twice, one week apart, produces two snapshots and makes change detection possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I fetch only what changed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;incrementalMode&lt;/code&gt; for that. Without it, a re-run returns the full set again, leaving deduplication to your side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an official Stepstone export?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. There is no public bulk export or API, so the field list above comes from parsing pages rather than a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these are the fields you need, &lt;a href="https://apify.com/blackfalcondata/stepstone-de-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Stepstone API we keep working&lt;/a&gt; produces them. New accounts receive $5 of free platform credit each month, enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/internshala-scraper/" rel="noopener noreferrer"&gt;Internshala API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/bayt-scraper/" rel="noopener noreferrer"&gt;what the Bayt API returns&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/jobstreet-scraper/" rel="noopener noreferrer"&gt;what the Jobstreet API returns&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/stepstone-de-scraper/" rel="noopener noreferrer"&gt;how the Stepstone API responds&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>Jobstreet API schema: fields, filters, and what is missing</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 23:17:55 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/jobstreet-api-pull-73-fields-per-record-without-an-official-endpoint-44m0</link>
      <guid>https://dev.to/blackfalcondata/jobstreet-api-pull-73-fields-per-record-without-an-official-endpoint-44m0</guid>
      <description>&lt;p&gt;The Jobstreet API produces 73 fields per record. Below is the complete field list, what each group contains, and which values may come back empty. The sales pitch waits until the end.&lt;/p&gt;

&lt;p&gt;Coverage includes Malaysia, Singapore, Indonesia and the Philippines.&lt;/p&gt;

&lt;p&gt;These are the results our own Jobstreet Actor returns, along with its cost and limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Every row contains &lt;strong&gt;73 fields&lt;/strong&gt;, organized into these groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;company&lt;/strong&gt; — company, companyUrl, companyIndustry, companySize, companyWebsite, companyDescription, companyLogo, companyCoverImageUrl, companyPerks, companySearchUrl, companyReviewRating, companyReviewCount&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;location&lt;/strong&gt; — location, locationCountry, locationState, locationSuburb, locationPostcode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;salary&lt;/strong&gt; — salaryText, salaryMin, salaryMax, salaryCurrency, salaryType&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — description, descriptionHtml, descriptionMarkdown, descriptionLength&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;job&lt;/strong&gt; — jobId, jobScore, jobScoreReasons&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;is&lt;/strong&gt; — isVerifiedAdvertiser, isSponsored, isRepost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contact&lt;/strong&gt; — contactName, contactEmail, contactPhone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;source&lt;/strong&gt; — sourceUrl, sourceCountry, sourceDomain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extracted&lt;/strong&gt; — extractedEmails, extractedPhones, extractedUrls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;category&lt;/strong&gt; — category, categoryId&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sub&lt;/strong&gt; — subCategory, subCategoryId&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;content&lt;/strong&gt; — contentQuality, contentHash&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;apply&lt;/strong&gt; — applyEmail, applyUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;applicant&lt;/strong&gt; — applicantCount, applicantVolumeLabel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;search&lt;/strong&gt; — searchQuery, searchUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is an actual record from a run, trimmed to its leading fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0b30f9455ac6d9078bd29ea2a74fc7f7af82cb623420ee0cbb4b7feaf5d9f5be"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"seekJobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"94051545"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Software Engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"canonicalUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://my.jobstreet.com/job/94051545"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"techstreet"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"advertiserId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"63825126"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Petaling Jaya, Selangor"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"locationCountry"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MY"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"locationState"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"locationSuburb"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"locationPostcode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryText"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"RM 5,000 - RM 7,000 per month"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5000&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input supports 53 options, including &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;country&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;startUrls&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;maxPages&lt;/code&gt;, &lt;code&gt;sortMode&lt;/code&gt;, &lt;code&gt;dateRange&lt;/code&gt;, &lt;code&gt;workType&lt;/code&gt;, &lt;code&gt;workArrangement&lt;/code&gt;, &lt;code&gt;classification&lt;/code&gt;, &lt;code&gt;subClassification&lt;/code&gt;, &lt;code&gt;salaryMin&lt;/code&gt;, &lt;code&gt;salaryMax&lt;/code&gt;, &lt;code&gt;includeKeywords&lt;/code&gt;, &lt;code&gt;excludeKeywords&lt;/code&gt;, &lt;code&gt;keywordMatchTitle&lt;/code&gt;, &lt;code&gt;keywordMatchCompany&lt;/code&gt;, &lt;code&gt;keywordMatchDescription&lt;/code&gt;, &lt;code&gt;keywordMatchCategory&lt;/code&gt;, and more. Because the filters run server-side, you pay for the records you requested instead of collecting extra records and filtering them afterwards.&lt;/p&gt;

&lt;p&gt;The available markets are Malaysia, Singapore, Indonesia and the Philippines. The &lt;code&gt;country&lt;/code&gt; option accepts &lt;code&gt;MY&lt;/code&gt;, &lt;code&gt;SG&lt;/code&gt;, &lt;code&gt;ID&lt;/code&gt;, &lt;code&gt;PH&lt;/code&gt; and defaults to &lt;code&gt;MY&lt;/code&gt;. Each run is limited to one market before any records are produced, so data outside that market is neither fetched nor billed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.01 per actor start&lt;/li&gt;
&lt;li&gt;$0.002 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the figures from a measured run, not an estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;25 records&lt;/strong&gt; in &lt;strong&gt;28.0 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00155&lt;/strong&gt; — about $0.06 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields support comparisons across the entire result set instead of requiring someone to eyeball a page of listings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reputation monitoring.&lt;/strong&gt; Ratings and review text reveal changes over time that one page view cannot show.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields help narrow the data to the relevant segment before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps make it possible to diff runs and act on new information instead of re-reading the full set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields allow market-by-market comparisons without another data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty value means the source displayed nothing. The Actor never infers fields or fills them with data from elsewhere.&lt;/li&gt;
&lt;li&gt;The schema tracks Jobstreet's markup. A redesign can add, rename or remove fields.&lt;/li&gt;
&lt;li&gt;Anything Jobstreet places behind a login is deliberately absent from every field below.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Operational details
&lt;/h2&gt;

&lt;p&gt;Fields are not always populated, and missing values are never guessed. When the source leaves a field blank, the field comes back blank. An empty value therefore means Jobstreet did not display one, not that extraction failed.&lt;/p&gt;

&lt;p&gt;For market selection, &lt;code&gt;country&lt;/code&gt; accepts &lt;code&gt;MY&lt;/code&gt;, &lt;code&gt;SG&lt;/code&gt;, &lt;code&gt;ID&lt;/code&gt;, &lt;code&gt;PH&lt;/code&gt; and defaults to &lt;code&gt;MY&lt;/code&gt;. A single run covers one market. Covering multiple markets requires multiple runs, each billed only for the records it returns.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;maxPages&lt;/code&gt;, &lt;code&gt;dateRange&lt;/code&gt;, &lt;code&gt;workType&lt;/code&gt; filters run server-side. That affects cost as well as convenience: records excluded by those filters are never produced and therefore never billed.&lt;/p&gt;

&lt;p&gt;Every run reads Jobstreet when it executes, with no cached copy in between. Two runs a week apart produce two snapshots, enabling change detection.&lt;/p&gt;

&lt;p&gt;To fetch only changed records, use &lt;code&gt;incrementalMode&lt;/code&gt;. Without it, another run returns the entire set, leaving deduplication to your side.&lt;/p&gt;

&lt;p&gt;There is no public bulk export or API. The field list above comes from parsing pages, not from a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these fields match your requirements, &lt;a href="https://apify.com/blackfalcondata/jobstreet-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Jobstreet API Actor&lt;/a&gt; produces them. New accounts receive $5 of free platform credit each month, enough to run a job of this size several times.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/upwork-scraper/" rel="noopener noreferrer"&gt;Upwork API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/internshala-scraper/" rel="noopener noreferrer"&gt;the Internshala API, in the same detail&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/bayt-scraper/" rel="noopener noreferrer"&gt;our write-up on the Bayt API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/jobstreet-scraper/" rel="noopener noreferrer"&gt;the full Jobstreet API reference&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>What the Bayt API returns — 68 fields, one real row</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 23:12:50 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/bayt-api-pull-68-fields-per-record-without-an-official-endpoint-4b28</link>
      <guid>https://dev.to/blackfalcondata/bayt-api-pull-68-fields-per-record-without-an-official-endpoint-4b28</guid>
      <description>&lt;p&gt;The Bayt API is best evaluated by looking at its schema. Below are all 68 fields, grouped by what they describe, followed by the filters that narrow a run before it costs anything.&lt;/p&gt;

&lt;p&gt;Coverage includes INTERNATIONAL, the United Arab Emirates, Saudi Arabia, Egypt, KW, QA, BH, JO, LB, PK, India, OM, IQ and MA.&lt;/p&gt;

&lt;p&gt;Here is what our own Bayt Actor returns, what it costs, and where its limits are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Each record contains &lt;strong&gt;68 fields&lt;/strong&gt;, divided into these groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;salary&lt;/strong&gt; — salaryText, salaryCurrency, salaryMin, salaryMax, salaryPeriod, salaryUsdCurrency, salaryUsdMin, salaryUsdMax, salaryUsdPeriod&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;is&lt;/strong&gt; — isRemote, isExternal, isAggregated, isHighlighted, isBranded, isAiTranslated, isRepost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;company&lt;/strong&gt; — company, companyUrl, companyLogoUrl, companySize&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — description, descriptionHtml, descriptionMarkdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contact&lt;/strong&gt; — contactName, contactEmail, contactPhone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extracted&lt;/strong&gt; — extractedEmails, extractedPhones, extractedUrls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;job&lt;/strong&gt; — jobId, jobRole&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;employment&lt;/strong&gt; — employmentType, employmentTypeNormalized&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;age&lt;/strong&gt; — ageMin, ageMax&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;posted&lt;/strong&gt; — postedDate, postedAt&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the first fields from one row in a real dataset:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"0b2e41dee2018d2b772f0560dab0ef015d1893b0ccd25ef0f0ee20c1d4c06804"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Senior OutSystems Developer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Harjai Computers"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://www.bayt.com/company/company/view/?lang=en&amp;amp;company-url=harjai-computers-2252580"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyLogoUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://secure.b8cdn.com/120x120/images/logo/80/2252580_logo_1754409431_n.png"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dubai, UAE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"city"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Dubai"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"country"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"UAE"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"distanceKm"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryText"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryCurrency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMax"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryPeriod"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input supports 40 options: &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;startUrls&lt;/code&gt;, &lt;code&gt;country&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;employmentType&lt;/code&gt;, &lt;code&gt;careerLevel&lt;/code&gt;, &lt;code&gt;datePosted&lt;/code&gt;, &lt;code&gt;sortBy&lt;/code&gt;, &lt;code&gt;searchMinSalary&lt;/code&gt;, &lt;code&gt;easyApplyOnly&lt;/code&gt;, &lt;code&gt;searchRadiusKm&lt;/code&gt;, &lt;code&gt;searchLatitude&lt;/code&gt;, &lt;code&gt;searchLongitude&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;includeDetails&lt;/code&gt;, &lt;code&gt;descriptionMaxLength&lt;/code&gt;, &lt;code&gt;compact&lt;/code&gt;, &lt;code&gt;removeEmptyFields&lt;/code&gt;, &lt;code&gt;incrementalMode&lt;/code&gt;, &lt;code&gt;stateKey&lt;/code&gt;, and more. Because the filters run server-side, you pay for the records you requested instead of filtering them afterwards.&lt;/p&gt;

&lt;p&gt;Coverage is INTERNATIONAL, the United Arab Emirates, Saudi Arabia, Egypt, KW, QA, BH, JO, LB, PK, India, OM, IQ and MA. The &lt;code&gt;country&lt;/code&gt; option accepts &lt;code&gt;INTERNATIONAL&lt;/code&gt;, &lt;code&gt;AE&lt;/code&gt;, &lt;code&gt;SA&lt;/code&gt;, &lt;code&gt;EG&lt;/code&gt;, &lt;code&gt;KW&lt;/code&gt;, &lt;code&gt;QA&lt;/code&gt;, &lt;code&gt;BH&lt;/code&gt;, &lt;code&gt;JO&lt;/code&gt;, &lt;code&gt;LB&lt;/code&gt;, &lt;code&gt;PK&lt;/code&gt;, &lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;OM&lt;/code&gt;, &lt;code&gt;IQ&lt;/code&gt;, &lt;code&gt;MA&lt;/code&gt;, with &lt;code&gt;INTERNATIONAL&lt;/code&gt; as the default. Each run is limited to one market before any record is produced, so records outside that market are neither fetched nor billed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.0005 per actor start&lt;/li&gt;
&lt;li&gt;$0.00099 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a measured run, not an estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;30 records&lt;/strong&gt; in &lt;strong&gt;5.5 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00052&lt;/strong&gt; — about $0.02 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields support comparisons across the entire set instead of requiring someone to eyeball a page of results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields help isolate the relevant segment before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps make it possible to diff runs and act on new records instead of reading everything again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields allow market-by-market comparisons without requiring a separate data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The honest caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty field means the source showed nothing. Values are never inferred or filled in from another source.&lt;/li&gt;
&lt;li&gt;The schema follows Bayt's markup. A redesign can add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;Anything Bayt places behind a login is absent from every field below, by design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Are all fields always populated?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No, and missing values are not guessed. When the source leaves a field blank, it comes back blank. An empty value means Bayt did not show one, not that extraction failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which markets does it cover?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;country&lt;/code&gt; accepts &lt;code&gt;INTERNATIONAL&lt;/code&gt;, &lt;code&gt;AE&lt;/code&gt;, &lt;code&gt;SA&lt;/code&gt;, &lt;code&gt;EG&lt;/code&gt;, &lt;code&gt;KW&lt;/code&gt;, &lt;code&gt;QA&lt;/code&gt;, &lt;code&gt;BH&lt;/code&gt;, &lt;code&gt;JO&lt;/code&gt;, &lt;code&gt;LB&lt;/code&gt;, &lt;code&gt;PK&lt;/code&gt;, &lt;code&gt;IN&lt;/code&gt;, &lt;code&gt;OM&lt;/code&gt;, &lt;code&gt;IQ&lt;/code&gt;, &lt;code&gt;MA&lt;/code&gt; and defaults to &lt;code&gt;INTERNATIONAL&lt;/code&gt;. A single run covers one market. Covering several requires several runs, each billed only for what it returns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which filters are applied at the source?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;employmentType&lt;/code&gt;, &lt;code&gt;datePosted&lt;/code&gt;, &lt;code&gt;searchMinSalary&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt; run server-side. This affects cost as well as convenience: filtered-out records are never produced, so they are never billed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How fresh is the data?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every run reads Bayt when it runs, with no cached copy in between. Two runs a week apart provide two snapshots, enabling change detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I fetch only what changed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes, through &lt;code&gt;incrementalMode&lt;/code&gt;. Without it, running the Actor again returns the full set, leaving you to dedupe it on your side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an official Bayt export?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. There is no public bulk export or API. The field list above therefore comes from parsing pages, not from a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these are the fields you need, &lt;a href="https://apify.com/blackfalcondata/bayt-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Bayt API endpoint we maintain&lt;/a&gt; produces them. New accounts receive $5 of free platform credit each month, enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.apify.com/platform/storage/dataset" rel="noopener noreferrer"&gt;dataset storage&lt;/a&gt; — how results are stored and exported&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/wellfound-scraper/" rel="noopener noreferrer"&gt;Wellfound API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/upwork-scraper/" rel="noopener noreferrer"&gt;the Upwork API field reference&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/internshala-scraper/" rel="noopener noreferrer"&gt;the Internshala API, in the same detail&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/bayt-scraper/" rel="noopener noreferrer"&gt;our write-up on the Bayt API&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>Every field the Internshala API returns (65)</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 23:07:45 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/internshala-api-pull-65-fields-per-record-without-an-official-endpoint-1gic</link>
      <guid>https://dev.to/blackfalcondata/internshala-api-pull-65-fields-per-record-without-an-official-endpoint-1gic</guid>
      <description>&lt;p&gt;Before building against Internshala, you need to know whether the data includes the fields your project requires. The Internshala API returns 65 fields per record. They are grouped below, followed by a real row from a run.&lt;/p&gt;

&lt;p&gt;Coverage is India.&lt;/p&gt;

&lt;p&gt;Here is what our own Internshala Actor returns, how much it costs, and where its coverage ends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Each record contains &lt;strong&gt;65 fields&lt;/strong&gt;, organized into these groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — description, descriptionHtml, descriptionMarkdown, descriptionLength&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;salary&lt;/strong&gt; — salaryMin, salaryMax, salaryCurrency, salaryPeriod&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;job&lt;/strong&gt; — jobId, jobKey, jobOfferText&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;company&lt;/strong&gt; — company, companyLogo, companyUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;is&lt;/strong&gt; — isWorkFromHome, isPartTime, isRepost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;source&lt;/strong&gt; — sourceUrl, sourceCountry, sourceDomain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;duration&lt;/strong&gt; — duration, durationMonths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;experience&lt;/strong&gt; — experienceMonths, experienceText&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;apply&lt;/strong&gt; — applyBy, applyUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;search&lt;/strong&gt; — searchQuery, searchUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;content&lt;/strong&gt; — contentQuality, contentHash&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This real record came straight from a run and has been trimmed to the first fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"59db134543d36eebaa2ece379f79dd87c4462de58167ea8c452b8a60f53dbfdc"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobKey"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3232934"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"listingType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"internship"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Front End Development"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Synergy Labs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyLogo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/static/images/search/placeholder_logo.svg"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Panipat, Panipat Sub-District"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"isWorkFromHome"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"isPartTime"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"workMode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"onsite"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"inOfficeDaysPerWeek"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"skills"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="s2"&gt;"HTML"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="s2"&gt;"CSS"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="s2"&gt;"JavaScript"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="s2"&gt;"... +2"&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not every field is populated, and missing values are never guessed. When the source leaves a field blank, the response leaves it blank too. An empty value means Internshala did not show one, not that extraction failed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input supports 40 options, including &lt;code&gt;listingType&lt;/code&gt;, &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;category&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;workFromHome&lt;/code&gt;, &lt;code&gt;partTime&lt;/code&gt;, &lt;code&gt;durationMonths&lt;/code&gt;, &lt;code&gt;withJobOffer&lt;/code&gt;, &lt;code&gt;fastResponse&lt;/code&gt;, &lt;code&gt;earlyApplicant&lt;/code&gt;, &lt;code&gt;forWomen&lt;/code&gt;, &lt;code&gt;minStipend&lt;/code&gt;, &lt;code&gt;minSalary&lt;/code&gt;, &lt;code&gt;startUrls&lt;/code&gt;, &lt;code&gt;country&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;maxPages&lt;/code&gt;, &lt;code&gt;includeDetails&lt;/code&gt;, &lt;code&gt;descriptionMaxLength&lt;/code&gt;, &lt;code&gt;compact&lt;/code&gt;, and more.&lt;/p&gt;

&lt;p&gt;Filters run server-side. You pay for the records you request instead of fetching a larger set and filtering it afterwards. In particular, &lt;code&gt;listingType&lt;/code&gt;, &lt;code&gt;category&lt;/code&gt;, &lt;code&gt;minStipend&lt;/code&gt;, &lt;code&gt;minSalary&lt;/code&gt; run server-side. Filtered-out records are never produced, so they are never billed.&lt;/p&gt;

&lt;p&gt;Coverage is India. &lt;code&gt;country&lt;/code&gt; accepts &lt;code&gt;IN&lt;/code&gt; and defaults to &lt;code&gt;IN&lt;/code&gt;. Each run is limited to one market before any record is produced, which means nothing outside that market is fetched or billed. Covering several markets requires several runs, with each run billed only for what it returns.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is pay per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.0005 per actor start&lt;/li&gt;
&lt;li&gt;$0.0004 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a measured run, not an estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;80 records&lt;/strong&gt; in &lt;strong&gt;7.7 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00059&lt;/strong&gt; — about $0.00742 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields support comparisons across the full set instead of forcing you to eyeball a page of results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reputation monitoring.&lt;/strong&gt; Ratings and review text tracked over time reveal movement that one page view cannot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields help narrow the data to the segment you care about before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps let you diff runs and respond to new records without re-reading the entire set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields allow market-by-market comparisons without another data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every run reads Internshala when it runs; there is no cached copy in between. Running it twice, one week apart, produces two snapshots for change detection.&lt;/p&gt;

&lt;p&gt;For changed records only, use &lt;code&gt;incrementalMode&lt;/code&gt;. Without it, another run returns the full set, leaving deduplication to your side.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it stops
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Empty means the source showed nothing. Fields are never inferred or filled in from elsewhere.&lt;/li&gt;
&lt;li&gt;The schema follows Internshala's markup, so a redesign can add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;Anything Internshala puts behind a login is absent from every field below, by design.&lt;/li&gt;
&lt;li&gt;There is no public bulk export or API. The field list above comes from parsing pages, not from a documented schema.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these are the fields you need, &lt;a href="https://apify.com/blackfalcondata/internshala-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Internshala API we keep working&lt;/a&gt; produces them. New accounts receive $5 of free platform credit each month, enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/seek-scraper/" rel="noopener noreferrer"&gt;Seek API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/wellfound-scraper/" rel="noopener noreferrer"&gt;what the Wellfound API returns&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/upwork-scraper/" rel="noopener noreferrer"&gt;what the Upwork API returns&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/internshala-scraper/" rel="noopener noreferrer"&gt;our Internshala API guide&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>Upwork API output: the complete field reference</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 23:02:40 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/upwork-api-pull-55-fields-per-record-without-an-official-endpoint-2f7n</link>
      <guid>https://dev.to/blackfalcondata/upwork-api-pull-55-fields-per-record-without-an-official-endpoint-2f7n</guid>
      <description>&lt;p&gt;The Upwork API produces 55 fields per record. Below is the complete field list, what each group contains, and which values may come back empty. The sales pitch waits until the end.&lt;/p&gt;

&lt;p&gt;These are the fields returned by our own Upwork Actor, along with its cost and limits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Each row contains &lt;strong&gt;55 fields&lt;/strong&gt;, organized into these groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;client&lt;/strong&gt; — clientCountry, clientCountryCode, clientTotalSpent, clientSpentCurrency, clientPaymentVerified, clientRating, clientReviewCount, clientHasFinancialPrivacy&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;salary&lt;/strong&gt; — salaryMin, salaryMax, salaryCurrency, salaryType&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — description, descriptionHtml, descriptionMarkdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;engagement&lt;/strong&gt; — engagementType, engagementDuration, engagementDurationWeeks&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extracted&lt;/strong&gt; — extractedEmails, extractedPhones, extractedUrls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contact&lt;/strong&gt; — contactName, contactEmail, contactPhone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;job&lt;/strong&gt; — jobId, jobType&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;budget&lt;/strong&gt; — budgetAmount, budgetCurrency&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;hourly&lt;/strong&gt; — hourlyBudgetMin, hourlyBudgetMax&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;skills&lt;/strong&gt; — skills, skillsDetailed&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the leading fields from an actual run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2091766535816529594"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"B2B: Company Enrichment"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Required data&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;For each company, provide:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;1. **Company Website**&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;2. **LinkedIn Company..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"descriptionHtml"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"descriptionMarkdown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Required data&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;For each company, provide:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="s2"&gt;1. **Company Website**&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;2. **LinkedIn Company..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"contentHash"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"7aee12807e5bf8bb0f107e537b987cc0aa9b655f611cf4117d02d1802cd6f3af"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"FIXED"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"experienceLevel"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ExpertLevel"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"budgetAmount"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"budgetCurrency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"USD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"hourlyBudgetMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"hourlyBudgetMax"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"weeklyRetainerBudget"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input accepts 55 options, including &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;searchUrl&lt;/code&gt;, &lt;code&gt;jobType&lt;/code&gt;, &lt;code&gt;experienceLevel&lt;/code&gt;, &lt;code&gt;workload&lt;/code&gt;, &lt;code&gt;sort&lt;/code&gt;, &lt;code&gt;category&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;excludeLocations&lt;/code&gt;, &lt;code&gt;budget&lt;/code&gt;, &lt;code&gt;hourlyRate&lt;/code&gt;, &lt;code&gt;duration&lt;/code&gt;, &lt;code&gt;verifiedPaymentOnly&lt;/code&gt;, &lt;code&gt;proposals&lt;/code&gt;, &lt;code&gt;contractToHire&lt;/code&gt;, &lt;code&gt;clientHires&lt;/code&gt;, &lt;code&gt;includeKeywords&lt;/code&gt;, &lt;code&gt;excludeKeywords&lt;/code&gt;, &lt;code&gt;fromDate&lt;/code&gt;, &lt;code&gt;toDate&lt;/code&gt;, and more.&lt;/p&gt;

&lt;p&gt;These filters run server-side. You pay only for the records requested, instead of producing a larger set and filtering it afterwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.001 per actor start&lt;/li&gt;
&lt;li&gt;$0.001 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One measured run—not an estimate—produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;25 records&lt;/strong&gt; in &lt;strong&gt;5.1 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00028&lt;/strong&gt; — about $0.01 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields support comparisons across the entire set instead of a page of results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reputation monitoring.&lt;/strong&gt; Tracking ratings and review text over time reveals movement that one page view cannot.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields allow market-by-market comparisons without another data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty field means the source showed nothing. Values are never inferred or filled from another source.&lt;/li&gt;
&lt;li&gt;The schema follows Upwork's markup, so a redesign can add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;Anything Upwork places behind a login is absent from every field below, by design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Are all fields always populated?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. They are not guessed, either. When the source leaves a field blank, the result stays blank. An empty value means Upwork did not show one, not that extraction failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which markets does it cover?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;location&lt;/code&gt; narrows the run before records are produced. You pay for the requested market instead of filtering the results afterwards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which filters are applied at the source?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;jobType&lt;/code&gt;, &lt;code&gt;category&lt;/code&gt;, &lt;code&gt;fromDate&lt;/code&gt;, &lt;code&gt;toDate&lt;/code&gt; run server-side. That affects cost as well as convenience: filtered-out records are never produced and therefore never billed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How fresh is the data?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every run reads Upwork when it runs, with no cached copy in between. Two runs a week apart provide two snapshots, making change detection possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I fetch only what changed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. &lt;code&gt;incrementalMode&lt;/code&gt; exists for that purpose. Without it, another run returns the full set, and you dedupe it on your side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an official Upwork export?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. There is no public bulk export or API, so the field list above comes from parsing pages, not a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these are the fields you need, &lt;a href="https://apify.com/blackfalcondata/upwork-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Upwork API, maintained against the live site&lt;/a&gt; produces them. New accounts receive $5 of free platform credit each month—enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/naukri-jobs-feed/" rel="noopener noreferrer"&gt;Naukri API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/seek-scraper/" rel="noopener noreferrer"&gt;our write-up on the Seek API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/wellfound-scraper/" rel="noopener noreferrer"&gt;the Wellfound API field reference&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/upwork-scraper/" rel="noopener noreferrer"&gt;the full Upwork API reference&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>Wellfound API data export: all 71 fields, grouped</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 22:57:35 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/wellfound-api-pull-71-fields-per-record-without-an-official-endpoint-2cp2</link>
      <guid>https://dev.to/blackfalcondata/wellfound-api-pull-71-fields-per-record-without-an-official-endpoint-2cp2</guid>
      <description>&lt;p&gt;The Wellfound API produces 71 fields per record. Here is the complete field list, organized by group, including what each group contains and which values can come back empty.&lt;/p&gt;

&lt;p&gt;Below is what our own Wellfound Actor returns, what it costs, and where its coverage ends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Every row contains &lt;strong&gt;71 fields&lt;/strong&gt;, divided into these groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;company&lt;/strong&gt; — companyId, companySlug, companyName, companyLogo, companyTagline, companySize, companyDescription, companyFoundedYear, companyLinkedIn, companyTwitter, companyFundingStage, companyTotalRaised, +4 more&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;salary&lt;/strong&gt; — salaryMin, salaryMax, salaryEquityMin, salaryEquityMax, salaryCurrency, salaryPeriod&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;job&lt;/strong&gt; — jobType, jobBenefits, jobAddressLocality, jobAddressRegion, jobAddressCountry&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — description, descriptionHtml, descriptionMarkdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extracted&lt;/strong&gt; — extractedEmails, extractedPhones, extractedUrls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;remote&lt;/strong&gt; — remote, remoteKind&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;years&lt;/strong&gt; — yearsExperienceMin, yearsExperienceMax&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a real record from one run, trimmed to the leading fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"4579450"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Software Engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"slug"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"software-engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"portalUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://wellfound.com/jobs/4579450-software-engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"detailUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://wellfound.com/jobs/4579450-software-engineer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"compensation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"$110k - $155k"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;110000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMax"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;155000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryEquityMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryEquityMax"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Join us in pioneering the next generation of nuclear reactors! You'll leverage your sof..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"descriptionHtml"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"descriptionMarkdown"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Join us in pioneering the next generation of nuclear reactors! You'll leverage your sof..."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"full-time"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input accepts 55 options, including &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;roles&lt;/code&gt;, &lt;code&gt;searchUrls&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;excludeLocations&lt;/code&gt;, &lt;code&gt;remote&lt;/code&gt;, &lt;code&gt;originLocation&lt;/code&gt;, &lt;code&gt;radiusMiles&lt;/code&gt;, &lt;code&gt;radiusKm&lt;/code&gt;, &lt;code&gt;jobType&lt;/code&gt;, &lt;code&gt;experienceLevel&lt;/code&gt;, &lt;code&gt;salaryMin&lt;/code&gt;, &lt;code&gt;salaryMax&lt;/code&gt;, &lt;code&gt;equityMin&lt;/code&gt;, &lt;code&gt;visaSponsorship&lt;/code&gt;, &lt;code&gt;includeKeywords&lt;/code&gt;, &lt;code&gt;excludeKeywords&lt;/code&gt;, &lt;code&gt;fromDate&lt;/code&gt;, &lt;code&gt;toDate&lt;/code&gt;, &lt;code&gt;maxAgeMinutes&lt;/code&gt;, and more.&lt;/p&gt;

&lt;p&gt;These filters run server-side. You pay for the records you requested instead of producing a larger set and filtering it afterwards.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.005 per actor start&lt;/li&gt;
&lt;li&gt;$0.003 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here are the results of a measured run, not an estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;120 records&lt;/strong&gt; in &lt;strong&gt;91.0 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00876&lt;/strong&gt; — about $0.07 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields support comparisons across the full set instead of requiring someone to eyeball a page of results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields help narrow the data to the relevant segment before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps make it possible to diff runs and act on new records instead of re-reading the entire set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields allow market-by-market comparisons without a separate data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty value means the source showed nothing. Fields are never inferred or completed with information from elsewhere.&lt;/li&gt;
&lt;li&gt;The schema follows Wellfound's markup. A redesign can add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;Anything Wellfound puts behind a login is absent from every field below, by design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Are all fields always populated?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No, and missing values are not guessed. When the source leaves a field blank, it comes back blank. An empty value means Wellfound did not show one, not that extraction failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which markets does it cover?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;location&lt;/code&gt; option narrows the run before any records are produced. You pay for the requested market instead of filtering the results afterwards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which filters are applied at the source?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;jobType&lt;/code&gt;, &lt;code&gt;salaryMin&lt;/code&gt;, &lt;code&gt;salaryMax&lt;/code&gt;, &lt;code&gt;equityMin&lt;/code&gt; run server-side. That affects cost as well as convenience: filtered-out records are never produced, so they are never billed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How fresh is the data?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every run reads Wellfound when it runs, with no cached copy in between. Two runs a week apart produce two snapshots, enabling change detection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I fetch only what changed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. &lt;code&gt;incrementalMode&lt;/code&gt; exists for that. Without it, a re-run returns the full set again, leaving you to dedupe it on your side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an official Wellfound export?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. There is no public bulk export or API. The field list above therefore comes from parsing pages, not from a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these are the fields you need, &lt;a href="https://apify.com/blackfalcondata/wellfound-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Wellfound API on Apify&lt;/a&gt; produces them. New accounts receive $5 of free platform credit each month, enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/trustpilot-reviews-scraper/" rel="noopener noreferrer"&gt;Trustpilot API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/naukri-jobs-feed/" rel="noopener noreferrer"&gt;the Naukri API, in the same detail&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/seek-scraper/" rel="noopener noreferrer"&gt;the Seek API field reference&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/wellfound-scraper/" rel="noopener noreferrer"&gt;our Wellfound API guide&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>Every field the Seek API returns (73)</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 22:51:07 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/seek-api-pull-73-fields-per-record-without-an-official-endpoint-5gak</link>
      <guid>https://dev.to/blackfalcondata/seek-api-pull-73-fields-per-record-without-an-official-endpoint-5gak</guid>
      <description>&lt;p&gt;The Seek API produces 73 fields per record. Below is the complete field list, what each group contains, which values may come back empty, what our own Seek Actor costs, and where its coverage ends.&lt;/p&gt;

&lt;p&gt;Coverage is Australia and New Zealand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Every row contains &lt;strong&gt;73 fields&lt;/strong&gt;, organized into these groups:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;company&lt;/strong&gt; — company, companyUrl, companyIndustry, companySize, companyWebsite, companyDescription, companyLogo, companyCoverImageUrl, companyPerks, companySearchUrl, companyReviewRating, companyReviewCount&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;location&lt;/strong&gt; — location, locationCountry, locationState, locationSuburb, locationPostcode&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;salary&lt;/strong&gt; — salaryText, salaryMin, salaryMax, salaryCurrency, salaryType&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — description, descriptionHtml, descriptionMarkdown, descriptionLength&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;job&lt;/strong&gt; — jobId, jobScore, jobScoreReasons&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;is&lt;/strong&gt; — isVerifiedAdvertiser, isSponsored, isRepost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contact&lt;/strong&gt; — contactName, contactEmail, contactPhone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;source&lt;/strong&gt; — sourceUrl, sourceCountry, sourceDomain&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extracted&lt;/strong&gt; — extractedEmails, extractedPhones, extractedUrls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;category&lt;/strong&gt; — category, categoryId&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;sub&lt;/strong&gt; — subCategory, subCategoryId&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;content&lt;/strong&gt; — contentQuality, contentHash&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;apply&lt;/strong&gt; — applyEmail, applyUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;applicant&lt;/strong&gt; — applicantCount, applicantVolumeLabel&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;search&lt;/strong&gt; — searchQuery, searchUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This actual record from a run has been cut to the leading fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"f047cfa35f820db1076061549cb815edeac9b2496740af0bdd56be931031a22b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"seekJobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"94033849"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Full Stack Developer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"canonicalUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://au.seek.com/job/94033849"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"company"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Alzaro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"advertiserId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"41508582"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"location"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Melbourne VIC"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"locationCountry"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"AU"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"locationState"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"locationSuburb"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"locationPostcode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryText"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input supports 53 options: &lt;code&gt;query&lt;/code&gt;, &lt;code&gt;country&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;startUrls&lt;/code&gt;, &lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;maxPages&lt;/code&gt;, &lt;code&gt;sortMode&lt;/code&gt;, &lt;code&gt;dateRange&lt;/code&gt;, &lt;code&gt;workType&lt;/code&gt;, &lt;code&gt;workArrangement&lt;/code&gt;, &lt;code&gt;classification&lt;/code&gt;, &lt;code&gt;subClassification&lt;/code&gt;, &lt;code&gt;salaryMin&lt;/code&gt;, &lt;code&gt;salaryMax&lt;/code&gt;, &lt;code&gt;includeKeywords&lt;/code&gt;, &lt;code&gt;excludeKeywords&lt;/code&gt;, &lt;code&gt;keywordMatchTitle&lt;/code&gt;, &lt;code&gt;keywordMatchCompany&lt;/code&gt;, &lt;code&gt;keywordMatchDescription&lt;/code&gt;, &lt;code&gt;keywordMatchCategory&lt;/code&gt;, and more.&lt;/p&gt;

&lt;p&gt;These filters run server-side. You pay for the records you request instead of retrieving a larger set and filtering it afterwards.&lt;/p&gt;

&lt;p&gt;Coverage spans Australia and New Zealand. The &lt;code&gt;country&lt;/code&gt; field accepts &lt;code&gt;AU&lt;/code&gt;, &lt;code&gt;NZ&lt;/code&gt;, defaulting to &lt;code&gt;AU&lt;/code&gt;. Each run is scoped to one market before it produces a record, so data outside that market is neither fetched nor billed.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it costs
&lt;/h2&gt;

&lt;p&gt;Pricing is per event, with no subscription:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;$0.01 per actor start&lt;/li&gt;
&lt;li&gt;$0.002 per result&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is a measured run, not an estimate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;25 records&lt;/strong&gt; in &lt;strong&gt;10.5 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00073&lt;/strong&gt; — about $0.03 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields support comparisons across the full set instead of a page of results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reputation monitoring.&lt;/strong&gt; Ratings and review text reveal movement over time that one page view cannot show.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields help isolate the relevant segment before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps make it possible to diff runs and act on new data instead of reading everything again.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields allow market-by-market comparisons without another data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty field means the source showed nothing. Values are never inferred or filled from another source.&lt;/li&gt;
&lt;li&gt;The schema follows Seek's markup, so a redesign can add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;Anything Seek puts behind a login is absent from every field below, by design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Questions people ask
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Are all fields always populated?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. They are not guessed. When the source leaves a field blank, the field comes back blank. An empty value means Seek did not show one, not that extraction failed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which markets does it cover?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;country&lt;/code&gt; accepts &lt;code&gt;AU&lt;/code&gt;, &lt;code&gt;NZ&lt;/code&gt; and defaults to &lt;code&gt;AU&lt;/code&gt;. A run covers one market. Covering several requires several runs, and each run is billed only for what it returns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which filters are applied at the source?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;maxResults&lt;/code&gt;, &lt;code&gt;maxPages&lt;/code&gt;, &lt;code&gt;dateRange&lt;/code&gt;, &lt;code&gt;workType&lt;/code&gt; run server-side. This affects cost as well as convenience: filtered-out records are never produced, so they are never billed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How fresh is the data?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every run reads Seek when it runs, with no cached copy in between. Two runs a week apart produce two snapshots, making change detection possible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I fetch only what changed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. &lt;code&gt;incrementalMode&lt;/code&gt; exists for that. Without it, a re-run returns the full set again, and you dedupe on your side.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an official Seek export?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No. There is no public bulk export or API. The field list above therefore comes from parsing pages, not from a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these are the fields you need, &lt;a href="https://apify.com/blackfalcondata/seek-scraper?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Seek API endpoint we maintain&lt;/a&gt; produces them. New accounts receive $5 of free platform credit each month, enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/autoscout24-scraper/" rel="noopener noreferrer"&gt;Autoscout24 API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/trustpilot-reviews-scraper/" rel="noopener noreferrer"&gt;the Trustpilot API field reference&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/naukri-jobs-feed/" rel="noopener noreferrer"&gt;the Naukri API, in the same detail&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/seek-scraper/" rel="noopener noreferrer"&gt;our Seek API guide&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
    <item>
      <title>Naukri API data export: all 96 fields, grouped</title>
      <dc:creator>Black Falcon Data</dc:creator>
      <pubDate>Fri, 21 Aug 2026 22:51:06 +0000</pubDate>
      <link>https://dev.to/blackfalcondata/naukri-api-pull-96-fields-per-record-without-an-official-endpoint-5f79</link>
      <guid>https://dev.to/blackfalcondata/naukri-api-pull-96-fields-per-record-without-an-official-endpoint-5f79</guid>
      <description>&lt;p&gt;Before building against Naukri, check whether the data includes what you need. The Naukri API returns 96 fields per record. Below, they are grouped by purpose, followed by a real row.&lt;/p&gt;

&lt;p&gt;Here is what our own Naukri Actor returns, what it costs, and where its coverage ends.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every field
&lt;/h2&gt;

&lt;p&gt;Each record carries &lt;strong&gt;96 fields&lt;/strong&gt;, grouped as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;company&lt;/strong&gt; — companyName, companyId, companyWebsite, companyApplyJob, companyApplyUrl, companyDescription, companyAddress, companyMedia, companyPageUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;salary&lt;/strong&gt; — salary, salaryMin, salaryMax, salaryCurrency, salaryVariablePercent, salaryMinPerMonth, salaryMaxPerMonth, salaryHidden&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;description&lt;/strong&gt; — descriptionSnippet, description, descriptionHtml, descriptionMarkdown&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;job&lt;/strong&gt; — jobId, jobRole, jobType&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;apply&lt;/strong&gt; — applyByTime, applyCount, applyRedirectUrl&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;contact&lt;/strong&gt; — contactName, contactEmail, contactPhone&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;extracted&lt;/strong&gt; — extractedEmails, extractedPhones, extractedUrls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;location&lt;/strong&gt; — location, locationGids&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;logo&lt;/strong&gt; — logoPath, logoPathV3&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ambition&lt;/strong&gt; — ambitionBox, ambitionBoxDetails&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;is&lt;/strong&gt; — isTopGroup, isRepost&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;static&lt;/strong&gt; — staticUrl, staticCompanyName&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;hide&lt;/strong&gt; — hideClientName, hideApplyButton&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;education&lt;/strong&gt; — educationUG, educationPG&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;walk&lt;/strong&gt; — walkIn, walkInDetail&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;social&lt;/strong&gt; — socialBanner, socialProfiles&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;repost&lt;/strong&gt; — repostOfId, repostDetectedAt&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This real record came straight from a run and has been trimmed to the first fields:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"jobId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"180826501393"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Developer III - Apigee, JSON, JavaScript, XML"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"UST"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"companyId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5987420&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"experienceText"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"3-5 Yrs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"minimumExperience"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"maximumExperience"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Not disclosed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMax"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryCurrency"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryVariablePercent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMinPerMonth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="nl"&gt;"salaryMaxPerMonth"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Filters that narrow a run
&lt;/h2&gt;

&lt;p&gt;The input accepts 57 options, including &lt;code&gt;keyword&lt;/code&gt;, &lt;code&gt;searchQueries&lt;/code&gt;, &lt;code&gt;skills&lt;/code&gt;, &lt;code&gt;jobIds&lt;/code&gt;, &lt;code&gt;startUrls&lt;/code&gt;, &lt;code&gt;ignoreUrlFailures&lt;/code&gt;, &lt;code&gt;location&lt;/code&gt;, &lt;code&gt;experience&lt;/code&gt;, &lt;code&gt;experienceMin&lt;/code&gt;, &lt;code&gt;experienceMax&lt;/code&gt;, &lt;code&gt;salary&lt;/code&gt;, &lt;code&gt;sortBy&lt;/code&gt;, &lt;code&gt;workMode&lt;/code&gt;, &lt;code&gt;freshness&lt;/code&gt;, &lt;code&gt;datePosted&lt;/code&gt;, &lt;code&gt;roleCategory&lt;/code&gt;, &lt;code&gt;industry&lt;/code&gt;, &lt;code&gt;cityTypeGid&lt;/code&gt;, &lt;code&gt;groupId&lt;/code&gt;, &lt;code&gt;companyId&lt;/code&gt;, and more.&lt;/p&gt;

&lt;p&gt;Filters run server-side. You pay for the records you requested instead of producing a larger set and filtering it afterwards.&lt;/p&gt;

&lt;p&gt;One measured run—not an estimate—produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;30 records&lt;/strong&gt; in &lt;strong&gt;8.9 seconds&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;cost: &lt;strong&gt;$0.00101&lt;/strong&gt; — about $0.03 per 1,000 records&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What people use it for
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Benchmarking.&lt;/strong&gt; Pricing and salary fields support comparisons across the whole set instead of a page of results.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lead lists.&lt;/strong&gt; Company-level fields let you isolate the relevant segment before anyone opens a CRM.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change detection.&lt;/strong&gt; Timestamps make it possible to diff runs and act on new records instead of re-reading everything.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Geographic analysis.&lt;/strong&gt; Location fields support market-by-market comparisons without a separate data source.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where it stops
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;An empty field means the source showed nothing. Values are never inferred or filled in from elsewhere.&lt;/li&gt;
&lt;li&gt;The schema follows Naukri's markup, so a redesign can add, rename or drop fields.&lt;/li&gt;
&lt;li&gt;Anything Naukri puts behind a login is absent from every field below, by design.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data coverage and behavior
&lt;/h2&gt;

&lt;p&gt;Not every field is always populated, and missing values are not guessed. When the source leaves a field blank, it comes back blank. An empty value therefore means Naukri did not show one rather than that extraction failed.&lt;/p&gt;

&lt;p&gt;For market coverage, &lt;code&gt;location&lt;/code&gt; narrows the run before any records are produced. You pay for the market you requested instead of filtering afterwards.&lt;/p&gt;

&lt;p&gt;The source applies &lt;code&gt;experienceMin&lt;/code&gt;, &lt;code&gt;experienceMax&lt;/code&gt;, &lt;code&gt;datePosted&lt;/code&gt;, &lt;code&gt;roleCategory&lt;/code&gt; server-side. This affects cost as well as convenience: filtered-out records are never produced, so they are never billed.&lt;/p&gt;

&lt;p&gt;Each run reads Naukri at the time it runs — there is no cached copy in between. Two runs a week apart provide two snapshots, which makes change detection possible.&lt;/p&gt;

&lt;p&gt;To fetch only what changed, use &lt;code&gt;incremental&lt;/code&gt;. Without it, a re-run returns the full set again and you dedupe on your side.&lt;/p&gt;

&lt;p&gt;There is no public bulk export or API. The field list above comes from parsing pages rather than from a documented schema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;If these fields match your requirements, &lt;a href="https://apify.com/blackfalcondata/naukri-jobs-feed?fpr=1h3gvi" rel="noopener noreferrer"&gt;the Naukri API we run so you do not have to&lt;/a&gt; produces them. New accounts get $5 of free platform credit each month, enough to cover a real run of this size several times over.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: we build and maintain this Actor, and the link above is an affiliate link.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/stepstone-de-scraper/" rel="noopener noreferrer"&gt;Stepstone API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/autoscout24-scraper/" rel="noopener noreferrer"&gt;our write-up on the Autoscout24 API&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://blackfalcondata.com/guides/trustpilot-reviews-scraper/" rel="noopener noreferrer"&gt;the Trustpilot API, in the same detail&lt;/a&gt; — another scraper we build and document&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;em&gt;We also publish &lt;a href="https://blackfalcondata.com/guides/naukri-jobs-feed/" rel="noopener noreferrer"&gt;our Naukri API guide&lt;/a&gt; on blackfalcondata.com — the request, the response, and what a run costs.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webscraping</category>
      <category>api</category>
    </item>
  </channel>
</rss>
