<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[vøiddo guides]]></title><description><![CDATA[Reference pages for web data APIs on the Apify Store: the fields each one returns, sample output, working inputs and the cost per 1,000 rows.]]></description><link>https://voiddo.hashnode.dev</link><image><url>https://cdn.hashnode.com/uploads/logos/6adf2b21f218f0c2c96f6e5c/bc0868a9-870b-428f-a3e7-c18d6412d265.png</url><title>vøiddo guides</title><link>https://voiddo.hashnode.dev</link></image><generator>RSS for Node</generator><lastBuildDate>Tue, 03 Nov 2026 04:29:41 GMT</lastBuildDate><atom:link href="https://voiddo.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Amazon Product Details Scraper data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[Amazon Product Details Scraper output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/amazon-product-scraper-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/amazon-product-scraper-data-api-reference</guid><category><![CDATA[web scraping]]></category><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[ecommerce]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Tue, 03 Nov 2026 02:45:26 GMT</pubDate><content:encoded><![CDATA[<p>Scrape Amazon.com product pages from ASINs or links: title, brand, price, list price, rating, ratings count, stock status, features, description, images, categories, best sellers rank, variations and product details.</p>
<p>This is the reference for the Actor <code>v0iddo/amazon-product-scraper</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/amazon-product-scraper</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/amazon-product-scraper">Amazon Product Details Scraper</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>16 (6 text, 5 number, 2 list, 1 URL, 1 image URL, 1 true/false)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>maxItems</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$1.50 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>asin</code></td>
<td>text</td>
<td>ASIN</td>
<td>B09B8V1LZ3</td>
</tr>
<tr>
<td><code>title</code></td>
<td>text</td>
<td>Title</td>
<td>Amazon Echo Dot (newest model) - Vibrant sounding speaker, Designed...</td>
</tr>
<tr>
<td><code>brand</code></td>
<td>text</td>
<td>Brand</td>
<td>Amazon</td>
</tr>
<tr>
<td><code>price</code></td>
<td>number</td>
<td>Price</td>
<td>79.99</td>
</tr>
<tr>
<td><code>listPrice</code></td>
<td>number</td>
<td>List price</td>
<td></td>
</tr>
<tr>
<td><code>rating</code></td>
<td>number</td>
<td>Stars</td>
<td>4.7</td>
</tr>
<tr>
<td><code>ratingsCount</code></td>
<td>number</td>
<td>Ratings</td>
<td>201463</td>
</tr>
<tr>
<td><code>inStock</code></td>
<td>true/false</td>
<td>In stock</td>
<td>true</td>
</tr>
<tr>
<td><code>mainImage</code></td>
<td>image URL</td>
<td>Image</td>
<td><a href="https://m.media-amazon.com/images/I/61J2sQtBYDL.ACSL1500_.jpg">https://m.media-amazon.com/images/I/61J2sQtBYDL.ACSL1500_.jpg</a></td>
</tr>
<tr>
<td><code>url</code></td>
<td>URL</td>
<td>Product URL</td>
<td><a href="https://www.amazon.com/dp/B09B8V1LZ3">https://www.amazon.com/dp/B09B8V1LZ3</a></td>
</tr>
<tr>
<td><code>currency</code></td>
<td>text</td>
<td></td>
<td>USD</td>
</tr>
<tr>
<td><code>availability</code></td>
<td>text</td>
<td></td>
<td>In Stock</td>
</tr>
<tr>
<td><code>description</code></td>
<td>text</td>
<td></td>
<td>Enhance your smart home hub experience with the Charcoal colored 20...</td>
</tr>
<tr>
<td><code>images</code></td>
<td>list</td>
<td></td>
<td>["<a href="https://m.media-amazon.com/images/I/61J2sQtBYDL.ACSL1500_.jpg">https://m.media-amazon.com/images/I/61J2sQtBYDL.ACSL1500_.jpg</a>",...</td>
</tr>
<tr>
<td><code>variationsCount</code></td>
<td>number</td>
<td></td>
<td>6</td>
</tr>
<tr>
<td><code>variationAsins</code></td>
<td>list</td>
<td></td>
<td>["B09B8V1LZ3", "B0HKL4CT1J", "B09B94RL1R"]</td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "asin": "B09B8V1LZ3",
  "url": "https://www.amazon.com/dp/B09B8V1LZ3",
  "title": "Amazon Echo Dot (newest model) - Vibrant sounding speaker, Designed for Alexa+, Great for bedrooms, dining rooms and offices, Charcoal",
  "brand": "Amazon",
  "price": 79.99,
  "currency": "USD",
  "rating": 4.7,
  "ratingsCount": 201463,
  "availability": "In Stock",
  "inStock": true,
  "description": "Enhance your smart home hub experience with the Charcoal colored 2022 Echo Dot 5th generation smart speaker featuring Alexa capabilities...",
  "images": [
    "https://m.media-amazon.com/images/I/61J2sQtBYDL._AC_SL1500_.jpg",
    "https://m.media-amazon.com/images/I/71hNp8d9WvL._AC_SL1500_.jpg",
    "https://m.media-amazon.com/images/I/71kDL97LTgL._AC_SL1500_.jpg"
  ],
  "mainImage": "https://m.media-amazon.com/images/I/61J2sQtBYDL._AC_SL1500_.jpg",
  "variationsCount": 6,
  "variationAsins": [
    "B09B8V1LZ3",
    "B0HKL4CT1J",
    "B09B94RL1R"
  ]
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>products</code></td>
<td>array</td>
<td>yes</td>
<td>["B09B8V1LZ3", "0735211299", "B00FLYWNYQ", "B09HM94VDS", "B0CFPJYX7...</td>
<td>Amazon.com ASINs such as B09B8V1LZ3, or product links such as <a href="https://www.amazon.com/dp/B09B8V1LZ3">https://www.amazon.com/dp/B09B8V1LZ3</a> (any link with /dp/ or /gp/product/ and the ASIN in it).</td>
</tr>
<tr>
<td><code>maxItems</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>The run stops after this many result rows.</td>
</tr>
</tbody></table>
<h2>Ready-made examples</h2>
<p>Saved inputs on Apify: run one as it is, or copy it and change the values.</p>
<ul>
<li><a href="https://apify.com/v0iddo/amazon-product-scraper/examples/amazon-product-details-by-asin">Amazon product details by ASIN</a></li>
<li><a href="https://apify.com/v0iddo/amazon-product-scraper/examples/amazon-price-monitor-by-asin">Amazon price monitor by ASIN</a></li>
<li><a href="https://apify.com/v0iddo/amazon-product-scraper/examples/amazon-asin-lookup-from-product-links">Amazon ASIN lookup from product links</a></li>
</ul>
<h2>Cost per 1,000 rows</h2>
<p>$1.50 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $1.05 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.15</td>
<td>$0.10</td>
</tr>
<tr>
<td>1,000</td>
<td>$1.50</td>
<td>$1.05</td>
</tr>
<tr>
<td>10,000</td>
<td>$15.00</td>
<td>$10.50</td>
</tr>
<tr>
<td>100,000</td>
<td>$150.00</td>
<td>$105.00</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>maxItems</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~amazon-product-scraper/run-sync-get-dataset-items?format=csv&amp;fields=asin,title,brand" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"products": ["B09B8V1LZ3", "0735211299", "B00FLYWNYQ", "B09HM94VDS", "B0CFPJYX7P", "B0BP9SNVH9"], "maxItems": 20}'
</code></pre>
<h2>Good to know</h2>
<ul>
<li>Covers amazon.com (United States). One row per product, at most 1000 products per run. Each product is one page request of about 2 MB, so large lists take a while.</li>
<li>Prices, stock and shipping are what amazon.com shows to a visitor without an account in the United States. When a product shows several offers, the price of the main offer is used.</li>
<li>Seller names, customer reviews and book author names are not collected.</li>
</ul>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/amazon-product-scraper">Amazon Product Details Scraper</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/amazon-product-scraper/">https://voidd0.github.io/amazon-product-scraper/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[App Store Top Charts Scraper data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[App Store Top Charts Scraper output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/app-store-top-charts-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/app-store-top-charts-data-api-reference</guid><category><![CDATA[web scraping]]></category><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[ecommerce]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Mon, 02 Nov 2026 02:45:50 GMT</pubDate><content:encoded><![CDATA[<p>Pull all three Apple App Store top charts (paid, grossing, and apps at no cost) for any country and genre.</p>
<p>This is the reference for the Actor <code>v0iddo/app-store-top-charts</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/app-store-top-charts</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/app-store-top-charts">App Store Top Charts Scraper</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>21 (17 text, 2 date, 1 URL, 1 number)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>limit</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$0.10 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>snapshotAt</code></td>
<td>date</td>
<td>Snapshot At</td>
<td>2026-10-26T04:24:43+00:00</td>
</tr>
<tr>
<td><code>chart</code></td>
<td>text</td>
<td>Chart</td>
<td>topfreeapplications</td>
</tr>
<tr>
<td><code>country</code></td>
<td>text</td>
<td>Country</td>
<td>us</td>
</tr>
<tr>
<td><code>genreId</code></td>
<td>text</td>
<td>Genre Id</td>
<td>0</td>
</tr>
<tr>
<td><code>rank</code></td>
<td>number</td>
<td>Rank</td>
<td>1</td>
</tr>
<tr>
<td><code>appId</code></td>
<td>text</td>
<td>App Id</td>
<td>632064380</td>
</tr>
<tr>
<td><code>trackName</code></td>
<td>text</td>
<td>Track Name</td>
<td>Vinted: Pre-loved marketplace</td>
</tr>
<tr>
<td><code>artistName</code></td>
<td>text</td>
<td>Artist Name</td>
<td></td>
</tr>
<tr>
<td><code>artistUrl</code></td>
<td>URL</td>
<td>Artist Url</td>
<td></td>
</tr>
<tr>
<td><code>category</code></td>
<td>text</td>
<td>Category</td>
<td>Shopping</td>
</tr>
<tr>
<td><code>categoryId</code></td>
<td>text</td>
<td>Category Id</td>
<td>6024</td>
</tr>
<tr>
<td><code>releaseDate</code></td>
<td>date</td>
<td>Release Date</td>
<td>2013-04-11T10:12:20-07:00</td>
</tr>
<tr>
<td><code>price</code></td>
<td>text</td>
<td></td>
<td>0.00</td>
</tr>
<tr>
<td><code>currency</code></td>
<td>text</td>
<td></td>
<td>USD</td>
</tr>
<tr>
<td><code>priceLabel</code></td>
<td>text</td>
<td></td>
<td>Get</td>
</tr>
<tr>
<td><code>contentType</code></td>
<td>text</td>
<td></td>
<td>Application</td>
</tr>
<tr>
<td><code>rights</code></td>
<td>text</td>
<td></td>
<td>© 2024 Vinted</td>
</tr>
<tr>
<td><code>summary</code></td>
<td>text</td>
<td></td>
<td>The idea is simple: you sell your pre-loved stuff to other members ...</td>
</tr>
<tr>
<td><code>title</code></td>
<td>text</td>
<td></td>
<td>Vinted: Pre-loved marketplace - Vinted Limited</td>
</tr>
<tr>
<td><code>appUrl</code></td>
<td>text</td>
<td></td>
<td><a href="https://apps.apple.com/us/app/vinted-pre-loved-marketplace/id632064">https://apps.apple.com/us/app/vinted-pre-loved-marketplace/id632064</a>...</td>
</tr>
<tr>
<td><code>artworkUrl</code></td>
<td>text</td>
<td></td>
<td><a href="https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/d3/cd/83/d3cd">https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/d3/cd/83/d3cd</a>...</td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "snapshotAt": "2026-10-26T04:24:43+00:00",
  "chart": "topfreeapplications",
  "country": "us",
  "genreId": "0",
  "rank": 1,
  "appId": "632064380",
  "trackName": "Vinted: Pre-loved marketplace",
  "category": "Shopping",
  "categoryId": "6024",
  "releaseDate": "2013-04-11T10:12:20-07:00",
  "price": "0.00",
  "currency": "USD",
  "priceLabel": "Get",
  "contentType": "Application",
  "rights": "© 2024 Vinted",
  "summary": "The idea is simple: you sell your pre-loved stuff to other members who’ll love it again. They get the thrill of unboxing a great find, yo...",
  "title": "Vinted: Pre-loved marketplace - Vinted Limited",
  "appUrl": "https://apps.apple.com/us/app/vinted-pre-loved-marketplace/id632064380?uo=2",
  "artworkUrl": "https://is1-ssl.mzstatic.com/image/thumb/Purple221/v4/d3/cd/83/d3cd83d1-4d21-6390-1c53-4e1557fdf70d/VintedAppIcon-0-0-1x_U007epad-0-1-85-..."
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>chartTypes</code></td>
<td>array</td>
<td>no</td>
<td>["topfreeapplications"]</td>
<td>Which charts to pull. Valid: topfreeapplications, toppaidapplications, topgrossingapplications.</td>
</tr>
<tr>
<td><code>countries</code></td>
<td>array</td>
<td>no</td>
<td>["us"]</td>
<td>ISO 3166-1 alpha-2 storefront codes.</td>
</tr>
<tr>
<td><code>genreIds</code></td>
<td>array</td>
<td>no</td>
<td>["0"]</td>
<td>Numeric Apple genre IDs. Examples: 0 (all), 6005 (Social Networking), 6014 (Games), 6017 (Education), 6020 (Medical), 6023 (Finance).</td>
</tr>
<tr>
<td><code>limit</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>How many apps to pull per (chart × country × genre).</td>
</tr>
</tbody></table>
<h2>Ready-made examples</h2>
<p>Saved inputs on Apify: run one as it is, or copy it and change the values.</p>
<ul>
<li><a href="https://apify.com/v0iddo/app-store-top-charts/examples/app-store-top-grossing-us">App Store top grossing iPhone apps, US</a></li>
<li><a href="https://apify.com/v0iddo/app-store-top-charts/examples/app-ranking-tracker-top-paid-games-uk">App ranking tracker: top paid games, UK App Store</a></li>
<li><a href="https://apify.com/v0iddo/app-store-top-charts/examples/top-grossing-apps-japan-app-store">Top grossing apps in Japan: App Store chart</a></li>
</ul>
<h2>Cost per 1,000 rows</h2>
<p>$0.10 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $0.07 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.01</td>
<td>$0.007</td>
</tr>
<tr>
<td>1,000</td>
<td>$0.10</td>
<td>$0.07</td>
</tr>
<tr>
<td>10,000</td>
<td>$1.00</td>
<td>$0.70</td>
</tr>
<tr>
<td>100,000</td>
<td>$10.00</td>
<td>$7.00</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>limit</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~app-store-top-charts/run-sync-get-dataset-items?format=csv&amp;fields=snapshotAt,chart,country" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"chartTypes": ["topfreeapplications"], "countries": ["us"], "genreIds": ["0"], "limit": 100}'
</code></pre>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/app-store-top-charts">App Store Top Charts Scraper</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/app-store-top-charts/">https://voidd0.github.io/app-store-top-charts/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Domain Availability Checker data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[Domain Availability Checker output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/domain-availability-checker-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/domain-availability-checker-data-api-reference</guid><category><![CDATA[web scraping]]></category><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[Data Science]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Sun, 01 Nov 2026 02:44:41 GMT</pubDate><content:encoded><![CDATA[<p>Check if domains are available, in bulk: one row per domain with available or registered, registrar, creation and expiry dates and days to expiry, straight from the registry that runs the TLD (RDAP).</p>
<p>This is the reference for the Actor <code>v0iddo/domain-availability-checker</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/domain-availability-checker</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/domain-availability-checker">Domain Availability Checker</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>14 (8 text, 2 date, 2 number, 1 list, 1 true/false)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>maxItems</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$1.00 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>domain</code></td>
<td>text</td>
<td>Domain</td>
<td>google.com</td>
</tr>
<tr>
<td><code>available</code></td>
<td>true/false</td>
<td>Available</td>
<td>false</td>
</tr>
<tr>
<td><code>status</code></td>
<td>text</td>
<td>Status</td>
<td>registered</td>
</tr>
<tr>
<td><code>registrar</code></td>
<td>text</td>
<td>Registrar</td>
<td>MarkMonitor Inc.</td>
</tr>
<tr>
<td><code>expirationDate</code></td>
<td>date</td>
<td>Expires</td>
<td>2028-09-14T04:00:00Z</td>
</tr>
<tr>
<td><code>daysToExpiry</code></td>
<td>number</td>
<td>Days to expiry</td>
<td>687</td>
</tr>
<tr>
<td><code>registrationDate</code></td>
<td>date</td>
<td>Registered</td>
<td>1997-09-15T04:00:00Z</td>
</tr>
<tr>
<td><code>note</code></td>
<td>text</td>
<td>Note</td>
<td></td>
</tr>
<tr>
<td><code>input</code></td>
<td>text</td>
<td></td>
<td>google.com</td>
</tr>
<tr>
<td><code>tld</code></td>
<td>text</td>
<td></td>
<td>com</td>
</tr>
<tr>
<td><code>ageDays</code></td>
<td>number</td>
<td></td>
<td>10634</td>
</tr>
<tr>
<td><code>domainStatus</code></td>
<td>list</td>
<td></td>
<td>["client delete prohibited", "client transfer prohibited", "client ...</td>
</tr>
<tr>
<td><code>registry</code></td>
<td>text</td>
<td></td>
<td><a href="https://rdap.verisign.com/com/v1/">https://rdap.verisign.com/com/v1/</a></td>
</tr>
<tr>
<td><code>checkedAt</code></td>
<td>text</td>
<td></td>
<td>2026-10-27T10:31:50+00:00</td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "input": "google.com",
  "domain": "google.com",
  "tld": "com",
  "available": false,
  "status": "registered",
  "registrar": "MarkMonitor Inc.",
  "registrationDate": "1997-09-15T04:00:00Z",
  "expirationDate": "2028-09-14T04:00:00Z",
  "daysToExpiry": 687,
  "ageDays": 10634,
  "domainStatus": [
    "client delete prohibited",
    "client transfer prohibited",
    "client update prohibited"
  ],
  "registry": "https://rdap.verisign.com/com/v1/",
  "checkedAt": "2026-10-27T10:31:50+00:00"
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>domains</code></td>
<td>array</td>
<td>yes</td>
<td>["google.com", "github.com", "wikipedia.org", "python.org", "mozill...</td>
<td>Domain names such as example.com or links such as <a href="https://www.example.com/page">https://www.example.com/page</a> (the domain is taken from the link, www.</td>
</tr>
<tr>
<td><code>maxItems</code></td>
<td>integer</td>
<td>no</td>
<td>1000</td>
<td>The run stops after this many result rows.</td>
</tr>
</tbody></table>
<h2>Ready-made examples</h2>
<p>Saved inputs on Apify: run one as it is, or copy it and change the values.</p>
<ul>
<li><a href="https://apify.com/v0iddo/domain-availability-checker/examples/domain-availability-checker-six-extensions">Domain availability checker: one name in 6 extensions</a></li>
<li><a href="https://apify.com/v0iddo/domain-availability-checker/examples/domain-name-ideas-com-checker">Domain name checker for 10 brand name ideas in .com</a></li>
<li><a href="https://apify.com/v0iddo/domain-availability-checker/examples/domain-expiry-checker-well-known-sites">Domain expiry checker: expiry dates of 10 well known sites</a></li>
</ul>
<h2>Cost per 1,000 rows</h2>
<p>$1.00 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $0.70 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.10</td>
<td>$0.07</td>
</tr>
<tr>
<td>1,000</td>
<td>$1.00</td>
<td>$0.70</td>
</tr>
<tr>
<td>10,000</td>
<td>$10.00</td>
<td>$7.00</td>
</tr>
<tr>
<td>100,000</td>
<td>$100.00</td>
<td>$70.00</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>maxItems</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~domain-availability-checker/run-sync-get-dataset-items?format=csv&amp;fields=domain,available,status" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains": ["google.com", "github.com", "wikipedia.org", "python.org", "mozilla.org", "voiddo.com", "bbc.co.uk", "example.net", "voiddo-availability-sample-7q3.com", "voiddo-availability-sample-7q3.org", "shop.github.com"], "maxItems": 20}'
</code></pre>
<h2>Good to know</h2>
<ul>
<li>Available means not registered at the registry. A reserved or premium name can still be refused or cost more at a registrar.</li>
<li>A TLD without an RDAP service, or a registry that closes its RDAP service in robots.txt, gives status unknown with the reason. No guessing from DNS.</li>
<li>A name under a registered domain (shop.example.com) gives status subdomain: it cannot be registered on its own.</li>
</ul>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/domain-availability-checker">Domain Availability Checker</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/domain-availability-checker/">https://voidd0.github.io/domain-availability-checker/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Bulk file and image downloader data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[Bulk file and image downloader output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/bulk-file-downloader-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/bulk-file-downloader-data-api-reference</guid><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Sat, 31 Oct 2026 02:44:17 GMT</pubDate><content:encoded><![CDATA[<p>Download files in bulk from direct links, or every image, video, audio file, PDF, document or archive on a list of web pages.</p>
<p>This is the reference for the Actor <code>v0iddo/bulk-file-downloader</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/bulk-file-downloader</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/bulk-file-downloader">Bulk file and image downloader</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>17 (11 text, 4 number, 2 URL)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>maxItems</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$2.00 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>fileUrl</code></td>
<td>URL</td>
<td>File</td>
<td><a href="https://api.apify.com/v2/key-value-stores/GKrosZlTQ8ZrHctTs/records">https://api.apify.com/v2/key-value-stores/GKrosZlTQ8ZrHctTs/records</a>...</td>
</tr>
<tr>
<td><code>fileName</code></td>
<td>text</td>
<td>Name</td>
<td>TrinidadandTobagohummingbirdscomposite.jpg</td>
</tr>
<tr>
<td><code>fileType</code></td>
<td>text</td>
<td>Type</td>
<td>image</td>
</tr>
<tr>
<td><code>fileBytes</code></td>
<td>number</td>
<td>Bytes</td>
<td>292246</td>
</tr>
<tr>
<td><code>imageWidth</code></td>
<td>number</td>
<td>Width</td>
<td>1280</td>
</tr>
<tr>
<td><code>imageHeight</code></td>
<td>number</td>
<td>Height</td>
<td>1280</td>
</tr>
<tr>
<td><code>altText</code></td>
<td>text</td>
<td>Alt text</td>
<td></td>
</tr>
<tr>
<td><code>url</code></td>
<td>URL</td>
<td>Source link</td>
<td><a href="https://thumb.wikimedia.org/wikipedia/commons/thumb/7/7c/Trinidad_a">https://thumb.wikimedia.org/wikipedia/commons/thumb/7/7c/Trinidad_a</a>...</td>
</tr>
<tr>
<td><code>error</code></td>
<td>text</td>
<td>Error</td>
<td></td>
</tr>
<tr>
<td><code>kind</code></td>
<td>text</td>
<td></td>
<td>file</td>
</tr>
<tr>
<td><code>pageUrl</code></td>
<td>text</td>
<td></td>
<td><a href="https://en.wikipedia.org/wiki/Hummingbird">https://en.wikipedia.org/wiki/Hummingbird</a></td>
</tr>
<tr>
<td><code>finalUrl</code></td>
<td>text</td>
<td></td>
<td><a href="https://thumb.wikimedia.org/wikipedia/commons/thumb/7/7c/Trinidad_a">https://thumb.wikimedia.org/wikipedia/commons/thumb/7/7c/Trinidad_a</a>...</td>
</tr>
<tr>
<td><code>foundIn</code></td>
<td>text</td>
<td></td>
<td>og:image</td>
</tr>
<tr>
<td><code>contentType</code></td>
<td>text</td>
<td></td>
<td>image/jpeg</td>
</tr>
<tr>
<td><code>sha256</code></td>
<td>text</td>
<td></td>
<td>82cafb5947635e2a5d5244de379932a7697c3aeb0e66bec7ea9e5fde9f78d303</td>
</tr>
<tr>
<td><code>chargeUnits</code></td>
<td>number</td>
<td></td>
<td>1</td>
</tr>
<tr>
<td><code>downloadedAt</code></td>
<td>text</td>
<td></td>
<td>2026-10-26T07:22:17Z</td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "kind": "file",
  "url": "https://thumb.wikimedia.org/wikipedia/commons/thumb/7/7c/Trinidad_and_Tobago_hummingbirds_composite.jpg/1280px-Trinidad_and_Tobago_hummin...",
  "pageUrl": "https://en.wikipedia.org/wiki/Hummingbird",
  "finalUrl": "https://thumb.wikimedia.org/wikipedia/commons/thumb/7/7c/Trinidad_and_Tobago_hummingbirds_composite.jpg/1280px-Trinidad_and_Tobago_hummin...",
  "foundIn": "og:image",
  "fileName": "Trinidad_and_Tobago_hummingbirds_composite.jpg",
  "fileType": "image",
  "contentType": "image/jpeg",
  "fileBytes": 292246,
  "sha256": "82cafb5947635e2a5d5244de379932a7697c3aeb0e66bec7ea9e5fde9f78d303",
  "imageWidth": 1280,
  "imageHeight": 1280,
  "fileUrl": "https://api.apify.com/v2/key-value-stores/GKrosZlTQ8ZrHctTs/records/000001-Trinidad_and_Tobago_hummingbirds_composite.jpg?signature=z1kCA...",
  "chargeUnits": 1,
  "downloadedAt": "2026-10-26T07:22:17Z"
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>fileUrls</code></td>
<td>array</td>
<td>no</td>
<td></td>
<td>Direct links to files of any type (images, video, audio, PDF, documents, archives).</td>
</tr>
<tr>
<td><code>pageUrls</code></td>
<td>array</td>
<td>no</td>
<td>["<a href="https://en.wikipedia.org/wiki/Hummingbird%22%5D">https://en.wikipedia.org/wiki/Hummingbird"]</a></td>
<td>Web pages to download files from: the images it shows (the largest size it offers), its video and audio, and the files it links to, filtered by File types.</td>
</tr>
<tr>
<td><code>fileTypes</code></td>
<td>array</td>
<td>no</td>
<td>["image"]</td>
<td>Which files to take from Pages.</td>
</tr>
<tr>
<td><code>sameSiteOnly</code></td>
<td>boolean</td>
<td>no</td>
<td>false</td>
<td>Take only files on the host of the page or its subdomains, leaving out files on other hosts (many sites keep their images on a separate CDN host, so this can drop them).</td>
</tr>
<tr>
<td><code>maxFilesPerPage</code></td>
<td>integer</td>
<td>no</td>
<td>200</td>
<td>Caps the files taken from one page, in the order they appear on it.</td>
</tr>
<tr>
<td><code>minImageKB</code></td>
<td>integer</td>
<td>no</td>
<td>5</td>
<td>Images found on pages that are smaller than this are left out (icons, spacers, tracking pixels) and not charged; 0 keeps every image.</td>
</tr>
<tr>
<td><code>maxFileMB</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>Larger files come back as a row with the reason, at no charge.</td>
</tr>
<tr>
<td><code>maxItems</code></td>
<td>integer</td>
<td>no</td>
<td>1000</td>
<td>The run stops after this many result rows.</td>
</tr>
</tbody></table>
<h2>Ready-made examples</h2>
<p>Saved inputs on Apify: run one as it is, or copy it and change the values.</p>
<ul>
<li><a href="https://apify.com/v0iddo/bulk-file-downloader/examples/download-all-pdfs-from-a-page">Download every PDF linked from a web page: IRS forms</a></li>
<li><a href="https://apify.com/v0iddo/bulk-file-downloader/examples/download-images-from-urls">Download images from a list of image links</a></li>
<li><a href="https://apify.com/v0iddo/bulk-file-downloader/examples/download-all-images-from-a-web-page">Download all images from a web page: hummingbird article</a></li>
</ul>
<h2>Cost per 1,000 rows</h2>
<p>$2.00 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $1.40 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.20</td>
<td>$0.14</td>
</tr>
<tr>
<td>1,000</td>
<td>$2.00</td>
<td>$1.40</td>
</tr>
<tr>
<td>10,000</td>
<td>$20.00</td>
<td>$14.00</td>
</tr>
<tr>
<td>100,000</td>
<td>$200.00</td>
<td>$140.00</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>maxItems</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~bulk-file-downloader/run-sync-get-dataset-items?format=csv&amp;fields=fileUrl,fileName,fileType" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"pageUrls": ["https://en.wikipedia.org/wiki/Hummingbird"], "fileTypes": ["image"], "maxFilesPerPage": 20, "maxItems": 20}'
</code></pre>
<h2>Good to know</h2>
<ul>
<li>Images on pages come in the largest size the page offers in srcset, and lazy loading attributes (data-src and the like) are read, so the real image is taken instead of a placeholder.</li>
<li>The same file under two links is stored once: the second row has duplicateOf and costs nothing. A link that appears on several pages is downloaded once.</li>
</ul>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/bulk-file-downloader">Bulk file and image downloader</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/bulk-file-downloader/">https://voidd0.github.io/bulk-file-downloader/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Indeed Jobs Scraper data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[Indeed Jobs Scraper output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/indeed-scraper-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/indeed-scraper-data-api-reference</guid><category><![CDATA[web scraping]]></category><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[jobs]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Fri, 30 Oct 2026 02:44:41 GMT</pubDate><content:encoded><![CDATA[<p>Scrape Indeed.com job search results: title, company and its rating, location, remote or hybrid, salary range and period where the employer shows it, job types, posting date, urgent and easy apply flags, snippet and job URL.</p>
<p>This is the reference for the Actor <code>v0iddo/indeed-scraper</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/indeed-scraper</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/indeed-scraper">Indeed Jobs Scraper</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>21 (10 text, 4 number, 4 true/false, 1 URL, 1 date, 1 list)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>maxItems</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$0.50 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>title</code></td>
<td>text</td>
<td>Title</td>
<td>Data Analyst / Business Analyst</td>
</tr>
<tr>
<td><code>company</code></td>
<td>text</td>
<td>Company</td>
<td>AIApply</td>
</tr>
<tr>
<td><code>location</code></td>
<td>text</td>
<td>Location</td>
<td>Remote</td>
</tr>
<tr>
<td><code>remote</code></td>
<td>true/false</td>
<td>Remote</td>
<td>true</td>
</tr>
<tr>
<td><code>salary</code></td>
<td>text</td>
<td>Salary</td>
<td>$100,000 a year</td>
</tr>
<tr>
<td><code>salaryMin</code></td>
<td>number</td>
<td>Salary min</td>
<td>100000</td>
</tr>
<tr>
<td><code>salaryMax</code></td>
<td>number</td>
<td>Salary max</td>
<td>100000</td>
</tr>
<tr>
<td><code>salaryPeriod</code></td>
<td>text</td>
<td>Salary period</td>
<td>year</td>
</tr>
<tr>
<td><code>postedAt</code></td>
<td>date</td>
<td>Posted</td>
<td>2026-05-16</td>
</tr>
<tr>
<td><code>jobTypes</code></td>
<td>list</td>
<td>Job types</td>
<td></td>
</tr>
<tr>
<td><code>sponsored</code></td>
<td>true/false</td>
<td>Sponsored</td>
<td>false</td>
</tr>
<tr>
<td><code>jobUrl</code></td>
<td>URL</td>
<td>Job URL</td>
<td><a href="https://www.indeed.com/viewjob?jk=89bbd94e4f145f69">https://www.indeed.com/viewjob?jk=89bbd94e4f145f69</a></td>
</tr>
<tr>
<td><code>jobKey</code></td>
<td>text</td>
<td></td>
<td>89bbd94e4f145f69</td>
</tr>
<tr>
<td><code>workplace</code></td>
<td>text</td>
<td></td>
<td>Remote</td>
</tr>
<tr>
<td><code>currency</code></td>
<td>text</td>
<td></td>
<td>USD</td>
</tr>
<tr>
<td><code>urgentlyHiring</code></td>
<td>true/false</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td><code>easyApply</code></td>
<td>true/false</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td><code>snippet</code></td>
<td>text</td>
<td></td>
<td>2+ years as a data or business analyst, ideally in a subscription o...</td>
</tr>
<tr>
<td><code>position</code></td>
<td>number</td>
<td></td>
<td>1</td>
</tr>
<tr>
<td><code>page</code></td>
<td>number</td>
<td></td>
<td>1</td>
</tr>
<tr>
<td><code>searchUrl</code></td>
<td>text</td>
<td></td>
<td><a href="https://www.indeed.com/jobs?q=data+analyst&amp;l=Remote">https://www.indeed.com/jobs?q=data+analyst&amp;l=Remote</a></td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "jobKey": "89bbd94e4f145f69",
  "title": "Data Analyst / Business Analyst",
  "company": "AIApply",
  "location": "Remote",
  "remote": true,
  "workplace": "Remote",
  "salary": "$100,000 a year",
  "salaryMin": 100000,
  "salaryMax": 100000,
  "salaryPeriod": "year",
  "currency": "USD",
  "postedAt": "2026-05-16",
  "sponsored": false,
  "urgentlyHiring": false,
  "easyApply": false,
  "snippet": "2+ years as a data or business analyst, ideally in a subscription or consumer software business. Partner with engineering on event tracki...",
  "jobUrl": "https://www.indeed.com/viewjob?jk=89bbd94e4f145f69",
  "position": 1,
  "page": 1,
  "searchUrl": "https://www.indeed.com/jobs?q=data+analyst&amp;l=Remote"
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>query</code></td>
<td>string</td>
<td>yes</td>
<td>data analyst</td>
<td>Job title, keywords, or company name.</td>
</tr>
<tr>
<td><code>location</code></td>
<td>string</td>
<td>no</td>
<td></td>
<td>City, state, zip code, or 'remote'.</td>
</tr>
<tr>
<td><code>datePosted</code></td>
<td>string</td>
<td>no</td>
<td>any</td>
<td>Only return jobs posted within this many days.</td>
</tr>
<tr>
<td><code>jobType</code></td>
<td>string</td>
<td>no</td>
<td></td>
<td>Filter by employment type.</td>
</tr>
<tr>
<td><code>includeSponsored</code></td>
<td>boolean</td>
<td>no</td>
<td>true</td>
<td>Paid listings Indeed mixes into the results.</td>
</tr>
<tr>
<td><code>maxPages</code></td>
<td>integer</td>
<td>no</td>
<td>2</td>
<td>Number of result pages to read per search.</td>
</tr>
<tr>
<td><code>maxItems</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>The run stops after this many result rows.</td>
</tr>
</tbody></table>
<h2>Cost per 1,000 rows</h2>
<p>$0.50 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $0.35 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.05</td>
<td>$0.04</td>
</tr>
<tr>
<td>1,000</td>
<td>$0.50</td>
<td>$0.35</td>
</tr>
<tr>
<td>10,000</td>
<td>$5.00</td>
<td>$3.50</td>
</tr>
<tr>
<td>100,000</td>
<td>$50.00</td>
<td>$35.00</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>maxItems</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~indeed-scraper/run-sync-get-dataset-items?format=csv&amp;fields=title,company,location" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query": "data analyst", "location": "Remote", "datePosted": "any", "jobType": "", "maxPages": 1, "maxItems": 20}'
</code></pre>
<h2>Good to know</h2>
<ul>
<li>Individual job detail pages (/viewjob) are closed to automated access in Indeed's robots.txt and are never fetched; jobUrl is provided as a reference link only.</li>
<li>Salary, posting date, job types and the remote flag are filled when Indeed shows them on the search card. Sponsored marks paid listings; turn off Include sponsored jobs to keep only the others.</li>
<li>Not affiliated with Indeed.</li>
</ul>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/indeed-scraper">Indeed Jobs Scraper</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/indeed-scraper/">https://voidd0.github.io/indeed-scraper/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Website content crawler data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[Website content crawler output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/website-content-crawler-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/website-content-crawler-data-api-reference</guid><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Thu, 29 Oct 2026 02:46:04 GMT</pubDate><content:encoded><![CDATA[<p>Crawls any public website from a start URL, follows internal links up to a set depth, and extracts title, breadcrumbs, clean text body, and word count.</p>
<p>This is the reference for the Actor <code>v0iddo/website-content-crawler</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/website-content-crawler</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/website-content-crawler">Website content crawler</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>8 (4 text, 2 number, 1 URL, 1 list)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>maxItems</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$2.55 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>url</code></td>
<td>URL</td>
<td>Page URL</td>
<td><a href="https://flask.palletsprojects.com/en/stable/">https://flask.palletsprojects.com/en/stable/</a></td>
</tr>
<tr>
<td><code>title</code></td>
<td>text</td>
<td>Title</td>
<td>Welcome to Flask</td>
</tr>
<tr>
<td><code>h1</code></td>
<td>text</td>
<td>H1 Heading</td>
<td>Welcome to Flask</td>
</tr>
<tr>
<td><code>breadcrumbs</code></td>
<td>list</td>
<td>Breadcrumbs</td>
<td>["Flask Documentation (3.1.x)", "Welcome to Flask"]</td>
</tr>
<tr>
<td><code>description</code></td>
<td>text</td>
<td>Description</td>
<td></td>
</tr>
<tr>
<td><code>textContent</code></td>
<td>text</td>
<td>Text content</td>
<td>Welcome to Flask Welcome to Flask’s documentation. Flask is a ligh...</td>
</tr>
<tr>
<td><code>wordCount</code></td>
<td>number</td>
<td>Word count</td>
<td>920</td>
</tr>
<tr>
<td><code>depth</code></td>
<td>number</td>
<td>Crawl depth</td>
<td>0</td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "url": "https://flask.palletsprojects.com/en/stable/",
  "title": "Welcome to Flask",
  "h1": "Welcome to Flask",
  "breadcrumbs": [
    "Flask Documentation (3.1.x)",
    "Welcome to Flask"
  ],
  "textContent": "Welcome to Flask  Welcome to Flask’s documentation. Flask is a lightweight WSGI web application framework.\nIt is designed to make getting...",
  "wordCount": 920,
  "depth": 0
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>startUrls</code></td>
<td>array</td>
<td>yes</td>
<td>["<a href="https://docs.python.org/3/library/%22%5D">https://docs.python.org/3/library/"]</a></td>
<td>One or more page URLs to begin crawling from.</td>
</tr>
<tr>
<td><code>maxDepth</code></td>
<td>integer</td>
<td>no</td>
<td>2</td>
<td>How many link-hops from the start URL to follow.</td>
</tr>
<tr>
<td><code>maxPagesPerUrl</code></td>
<td>integer</td>
<td>no</td>
<td>50</td>
<td>Hard cap on pages fetched per start URL, independent of the global maxItems limit.</td>
</tr>
<tr>
<td><code>includeUrlPattern</code></td>
<td>string</td>
<td>no</td>
<td></td>
<td>Optional regex. Only URLs matching this pattern are crawled.</td>
</tr>
<tr>
<td><code>excludeUrlPattern</code></td>
<td>string</td>
<td>no</td>
<td></td>
<td>Optional regex. URLs matching this pattern are skipped.</td>
</tr>
<tr>
<td><code>maxItems</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>The run stops after this many result rows.</td>
</tr>
</tbody></table>
<h2>Cost per 1,000 rows</h2>
<p>$2.55 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $1.78 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.25</td>
<td>$0.18</td>
</tr>
<tr>
<td>1,000</td>
<td>$2.55</td>
<td>$1.78</td>
</tr>
<tr>
<td>10,000</td>
<td>$25.50</td>
<td>$17.85</td>
</tr>
<tr>
<td>100,000</td>
<td>$255.00</td>
<td>$178.50</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>maxItems</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~website-content-crawler/run-sync-get-dataset-items?format=csv&amp;fields=url,title,h1" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": ["https://docs.python.org/3/library/"], "maxDepth": 1, "maxPagesPerUrl": 15, "maxItems": 20}'
</code></pre>
<h2>Good to know</h2>
<ul>
<li>The crawler stays within the same origin and path prefix as each start URL. Use includeUrlPattern or excludeUrlPattern to narrow scope on large sites; combine with maxPagesPerUrl to control cost.</li>
<li>Set maxDepth=0 to extract only the start page. maxDepth=1 adds all pages linked from the start page. Depths above 3 can produce thousands of pages on large sites.</li>
<li>Pages behind login, paywalls, or bot walls are not accessible.</li>
<li>Not affiliated with any documentation platform or website.</li>
</ul>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/website-content-crawler">Website content crawler</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/website-content-crawler/">https://voidd0.github.io/website-content-crawler/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Facebook Ad Library scraper data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[Facebook Ad Library scraper output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/facebook-ads-library-scraper-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/facebook-ads-library-scraper-data-api-reference</guid><category><![CDATA[web scraping]]></category><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[Data Science]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Wed, 28 Oct 2026 02:44:47 GMT</pubDate><content:encoded><![CDATA[<p>Collect public ads from the Meta Ad Library by keyword, advertiser Page ID or Ad Library link: ad text, headline, landing page, button, images and videos, dates, platforms and version count, plus spend and reach ranges where Meta publishes them.</p>
<p>This is the reference for the Actor <code>v0iddo/facebook-ads-library-scraper</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/facebook-ads-library-scraper</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/facebook-ads-library-scraper">Facebook Ad Library scraper</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>18 (9 text, 3 list, 2 URL, 2 date, 1 number, 1 true/false)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>maxItems</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$0.50 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>adArchiveId</code></td>
<td>text</td>
<td>Ad ID</td>
<td>1550534860016399</td>
</tr>
<tr>
<td><code>pageName</code></td>
<td>text</td>
<td>Advertiser</td>
<td>Perfect themes</td>
</tr>
<tr>
<td><code>isActive</code></td>
<td>true/false</td>
<td>Active</td>
<td>true</td>
</tr>
<tr>
<td><code>startDate</code></td>
<td>date</td>
<td>Started</td>
<td>2026-05-19</td>
</tr>
<tr>
<td><code>endDate</code></td>
<td>date</td>
<td>Ended</td>
<td></td>
</tr>
<tr>
<td><code>platforms</code></td>
<td>list</td>
<td>Platforms</td>
<td>["facebook", "instagram", "audience_network"]</td>
</tr>
<tr>
<td><code>body</code></td>
<td>text</td>
<td>Ad text</td>
<td></td>
</tr>
<tr>
<td><code>title</code></td>
<td>text</td>
<td>Headline</td>
<td>𝕊𝕦𝕡𝕖𝕣 𝕙𝕠𝕥 𝕨𝕚𝕕𝕘𝕖𝕥𝕤 𝕒𝕡𝕡 ！</td>
</tr>
<tr>
<td><code>ctaText</code></td>
<td>text</td>
<td>Button</td>
<td>Install now</td>
</tr>
<tr>
<td><code>linkUrl</code></td>
<td>URL</td>
<td>Landing page</td>
<td><a href="http://play.google.com/store/apps/details?id=com.iconchanger.widget">http://play.google.com/store/apps/details?id=com.iconchanger.widget</a>...</td>
</tr>
<tr>
<td><code>displayFormat</code></td>
<td>text</td>
<td>Format</td>
<td>IMAGE</td>
</tr>
<tr>
<td><code>imageUrls</code></td>
<td>list</td>
<td>Images</td>
<td>["<a href="https://scontent-lga3-1.xx.fbcdn.net/v/t39.35426-6/700927950_9333">https://scontent-lga3-1.xx.fbcdn.net/v/t39.35426-6/700927950_9333</a>...</td>
</tr>
<tr>
<td><code>adLibraryUrl</code></td>
<td>URL</td>
<td>Ad Library link</td>
<td><a href="https://www.facebook.com/ads/library/?id=1550534860016399">https://www.facebook.com/ads/library/?id=1550534860016399</a></td>
</tr>
<tr>
<td><code>pageId</code></td>
<td>text</td>
<td></td>
<td>115939511520844</td>
</tr>
<tr>
<td><code>pageCategories</code></td>
<td>list</td>
<td></td>
<td>["Topic"]</td>
</tr>
<tr>
<td><code>pageLikeCount</code></td>
<td>number</td>
<td></td>
<td>18620</td>
</tr>
<tr>
<td><code>searchedFor</code></td>
<td>text</td>
<td></td>
<td>nike</td>
</tr>
<tr>
<td><code>searchCountry</code></td>
<td>text</td>
<td></td>
<td>US</td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "adArchiveId": "1550534860016399",
  "adLibraryUrl": "https://www.facebook.com/ads/library/?id=1550534860016399",
  "pageId": "115939511520844",
  "pageName": "Perfect themes",
  "pageCategories": [
    "Topic"
  ],
  "pageLikeCount": 18620,
  "isActive": true,
  "startDate": "2026-05-19",
  "platforms": [
    "facebook",
    "instagram",
    "audience_network"
  ],
  "title": "𝕊𝕦𝕡𝕖𝕣 𝕙𝕠𝕥 𝕨𝕚𝕕𝕘𝕖𝕥𝕤 𝕒𝕡𝕡 ！",
  "linkUrl": "http://play.google.com/store/apps/details?id=com.iconchanger.widget.theme.shortcut",
  "ctaText": "Install now",
  "displayFormat": "IMAGE",
  "imageUrls": [
    "https://scontent-lga3-1.xx.fbcdn.net/v/t39.35426-6/700927950_933331229664450_6487763311056032772_n.jpg?_nc_cat=111&amp;ccb=1-7&amp;_nc_sid=c53f8f..."
  ],
  "searchedFor": "nike",
  "searchCountry": "US"
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>searchTerms</code></td>
<td>array</td>
<td>no</td>
<td>["nike"]</td>
<td>Words to search the Ad Library for, for example a brand or product name.</td>
</tr>
<tr>
<td><code>pageIds</code></td>
<td>array</td>
<td>no</td>
<td></td>
<td>Numeric Facebook Page IDs of advertisers whose ads you want, one per line.</td>
</tr>
<tr>
<td><code>adLibraryUrls</code></td>
<td>array</td>
<td>no</td>
<td></td>
<td>Optional search links copied from the browser, such as <a href="https://www.facebook.com/ads/library/?activestatus=active&amp;adtype=all&amp;country=US&amp;q=nike&amp;searchtype=keywordunordered">https://www.facebook.com/ads/library/?activestatus=active&amp;adtype=all&amp;country=US&amp;q=nike&amp;searchtype=keywordunordered</a>.</td>
</tr>
<tr>
<td><code>country</code></td>
<td>string</td>
<td>no</td>
<td>US</td>
<td>Where the ads were shown: a two-letter country code such as US, GB or DE, or ALL for every country.</td>
</tr>
<tr>
<td><code>activeStatus</code></td>
<td>string</td>
<td>no</td>
<td>active</td>
<td>Which ads to return: ads that are running now, ads that stopped, or both.</td>
</tr>
<tr>
<td><code>adType</code></td>
<td>string</td>
<td>no</td>
<td>all</td>
<td>Ad category in the Ad Library.</td>
</tr>
<tr>
<td><code>mediaType</code></td>
<td>string</td>
<td>no</td>
<td>all</td>
<td>Only ads that contain this kind of media.</td>
</tr>
<tr>
<td><code>startDateMin</code></td>
<td>string</td>
<td>no</td>
<td></td>
<td>Optional. Only ads that started running on or after this date, as YYYY-MM-DD.</td>
</tr>
<tr>
<td><code>startDateMax</code></td>
<td>string</td>
<td>no</td>
<td></td>
<td>Optional. Only ads that started running on or before this date, as YYYY-MM-DD.</td>
</tr>
<tr>
<td><code>maxAdsPerSearch</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>The most ads to read for each search term, Page ID or link.</td>
</tr>
<tr>
<td><code>maxItems</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>The run stops after this many result rows.</td>
</tr>
</tbody></table>
<h2>Cost per 1,000 rows</h2>
<p>$0.50 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $0.35 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.05</td>
<td>$0.04</td>
</tr>
<tr>
<td>1,000</td>
<td>$0.50</td>
<td>$0.35</td>
</tr>
<tr>
<td>10,000</td>
<td>$5.00</td>
<td>$3.50</td>
</tr>
<tr>
<td>100,000</td>
<td>$50.00</td>
<td>$35.00</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>maxItems</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~facebook-ads-library-scraper/run-sync-get-dataset-items?format=csv&amp;fields=adArchiveId,pageName,isActive" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchTerms": ["nike"], "country": "US", "activeStatus": "active", "maxItems": 20}'
</code></pre>
<h2>Good to know</h2>
<ul>
<li>If Meta shows a login, verification or CAPTCHA page instead of the Ad Library, the run stops and says so; it never tries to get around that.</li>
<li>Not affiliated with Meta. The data is what the public Ad Library shows to a visitor who is not logged in.</li>
</ul>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/facebook-ads-library-scraper">Facebook Ad Library scraper</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/facebook-ads-library-scraper/">https://voidd0.github.io/facebook-ads-library-scraper/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Google Maps Scraper data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[Google Maps Scraper output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/google-maps-scraper-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/google-maps-scraper-data-api-reference</guid><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Tue, 27 Oct 2026 02:43:28 GMT</pubDate><content:encoded><![CDATA[<p>Scrape Google Maps business listings by search and place: name, category, address, coordinates, rating, review count, phone, website, opening hours, place ID and Maps link.</p>
<p>This is the reference for the Actor <code>v0iddo/google-maps-scraper</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/google-maps-scraper</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/google-maps-scraper">Google Maps Scraper</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>22 (13 text, 5 number, 2 URL, 2 list)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>maxItems</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$1.50 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>name</code></td>
<td>text</td>
<td>Name</td>
<td>Refinery High End Coffee</td>
</tr>
<tr>
<td><code>category</code></td>
<td>text</td>
<td>Category</td>
<td>Coffee shop</td>
</tr>
<tr>
<td><code>address</code></td>
<td>text</td>
<td>Address</td>
<td>Albrechtstraße 11B, 10117 Berlin, Germany</td>
</tr>
<tr>
<td><code>city</code></td>
<td>text</td>
<td>City</td>
<td>Berlin</td>
</tr>
<tr>
<td><code>rating</code></td>
<td>number</td>
<td>Rating</td>
<td>4.6</td>
</tr>
<tr>
<td><code>reviewsCount</code></td>
<td>number</td>
<td>Reviews</td>
<td>1221</td>
</tr>
<tr>
<td><code>phone</code></td>
<td>text</td>
<td>Phone</td>
<td></td>
</tr>
<tr>
<td><code>website</code></td>
<td>URL</td>
<td>Website</td>
<td><a href="http://refinerycoffee.de/">http://refinerycoffee.de/</a></td>
</tr>
<tr>
<td><code>latitude</code></td>
<td>number</td>
<td>Latitude</td>
<td>52.5213117</td>
</tr>
<tr>
<td><code>longitude</code></td>
<td>number</td>
<td>Longitude</td>
<td>13.3849173</td>
</tr>
<tr>
<td><code>placeId</code></td>
<td>text</td>
<td>Place ID</td>
<td>ChIJ9UK3L8JRqEcRidYSi6cycYo</td>
</tr>
<tr>
<td><code>url</code></td>
<td>URL</td>
<td>Maps URL</td>
<td><a href="https://www.google.com/maps/place/?q=place_id:ChIJ9UK3L8JRqEcRidYSi">https://www.google.com/maps/place/?q=place_id:ChIJ9UK3L8JRqEcRidYSi</a>...</td>
</tr>
<tr>
<td><code>searchQuery</code></td>
<td>text</td>
<td></td>
<td>coffee shop in Berlin</td>
</tr>
<tr>
<td><code>position</code></td>
<td>number</td>
<td></td>
<td>1</td>
</tr>
<tr>
<td><code>categories</code></td>
<td>list</td>
<td></td>
<td>["Coffee shop"]</td>
</tr>
<tr>
<td><code>street</code></td>
<td>text</td>
<td></td>
<td>Albrechtstraße 11B</td>
</tr>
<tr>
<td><code>postalCode</code></td>
<td>text</td>
<td></td>
<td>10117</td>
</tr>
<tr>
<td><code>countryCode</code></td>
<td>text</td>
<td></td>
<td>DE</td>
</tr>
<tr>
<td><code>neighborhood</code></td>
<td>text</td>
<td></td>
<td>Mitte</td>
</tr>
<tr>
<td><code>openingHours</code></td>
<td>list</td>
<td></td>
<td>[{"day": "Monday", "hours": "8 AM-6 PM"}, {"day": "Tuesday", "hours...</td>
</tr>
<tr>
<td><code>featureId</code></td>
<td>text</td>
<td></td>
<td>0x47a851c22fb742f5:0x8a7132a78b12d689</td>
</tr>
<tr>
<td><code>cid</code></td>
<td>text</td>
<td></td>
<td>9975810344776554121</td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "searchQuery": "coffee shop in Berlin",
  "position": 1,
  "name": "Refinery High End Coffee",
  "category": "Coffee shop",
  "categories": [
    "Coffee shop"
  ],
  "address": "Albrechtstraße 11B, 10117 Berlin, Germany",
  "street": "Albrechtstraße 11B",
  "city": "Berlin",
  "postalCode": "10117",
  "countryCode": "DE",
  "neighborhood": "Mitte",
  "latitude": 52.5213117,
  "longitude": 13.3849173,
  "rating": 4.6,
  "reviewsCount": 1221,
  "website": "http://refinerycoffee.de/",
  "openingHours": [
    {
      "day": "Monday",
      "hours": "8 AM-6 PM"
    },
    {
      "day": "Tuesday",
      "hours": "8 AM-6 PM"
    },
    {
      "day": "Wednesday",
      "hours": "8 AM-6 PM"
    }
  ],
  "placeId": "ChIJ9UK3L8JRqEcRidYSi6cycYo",
  "featureId": "0x47a851c22fb742f5:0x8a7132a78b12d689",
  "cid": "9975810344776554121",
  "url": "https://www.google.com/maps/place/?q=place_id:ChIJ9UK3L8JRqEcRidYSi6cycYo"
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>searchQueries</code></td>
<td>array</td>
<td>no</td>
<td>["coffee shop"]</td>
<td>What to look for on Google Maps, one per line, for example: coffee shop, plumber, dentist.</td>
</tr>
<tr>
<td><code>location</code></td>
<td>string</td>
<td>no</td>
<td></td>
<td>Optional city, area or address added to every query as 'query in location', for example Berlin or Austin, TX.</td>
</tr>
<tr>
<td><code>startUrls</code></td>
<td>array</td>
<td>no</td>
<td></td>
<td>Optional Google Maps search links, for example <a href="https://www.google.com/maps/search/coffee+in+berlin">https://www.google.com/maps/search/coffee+in+berlin</a>.</td>
</tr>
<tr>
<td><code>language</code></td>
<td>string</td>
<td>no</td>
<td>en</td>
<td>Language of the Google Maps page: category names, days and hours.</td>
</tr>
<tr>
<td><code>maxPlacesPerSearch</code></td>
<td>integer</td>
<td>no</td>
<td>0</td>
<td>Stop each search after this many places (0 = as many as Google Maps lists, usually 100 to 200).</td>
</tr>
<tr>
<td><code>maxItems</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>The run stops after this many result rows.</td>
</tr>
</tbody></table>
<h2>Cost per 1,000 rows</h2>
<p>$1.50 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $1.05 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.15</td>
<td>$0.10</td>
</tr>
<tr>
<td>1,000</td>
<td>$1.50</td>
<td>$1.05</td>
</tr>
<tr>
<td>10,000</td>
<td>$15.00</td>
<td>$10.50</td>
</tr>
<tr>
<td>100,000</td>
<td>$150.00</td>
<td>$105.00</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>maxItems</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~google-maps-scraper/run-sync-get-dataset-items?format=csv&amp;fields=name,category,address" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQueries": ["coffee shop"], "location": "Berlin", "language": "en", "maxItems": 20}'
</code></pre>
<h2>Good to know</h2>
<ul>
<li>Reads the public Google Maps search pages the way a visitor's browser does, with no login and no Google account. robots.txt of <a href="http://www.google.com">www.google.com</a> allows these pages and the actor obeys it.</li>
<li>Google lists about 100 to 200 places for one search; for more, add queries or split by area ('dentist in Camden', 'dentist in Soho').</li>
<li>Phone and website are what the listing shows publicly for the business; many listings show no phone or website and have null there. No reviews or reviewer names are collected.</li>
<li>If Google shows a consent page, a CAPTCHA or an 'unusual traffic' page, the run stops and says so; the actor does not try to get around it. Run it again later.</li>
</ul>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/google-maps-scraper">Google Maps Scraper</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/google-maps-scraper/">https://voidd0.github.io/google-maps-scraper/</a></li>
</ul>
]]></content:encoded></item><item><title><![CDATA[IIMJobs Scraper data API: fields, sample output and cost per 1,000 rows]]></title><description><![CDATA[IIMJobs Scraper output fields, a sample record, input parameters and the price per 1,000 results, with a cURL call for CSV.]]></description><link>https://voiddo.hashnode.dev/iimjobs-scraper-data-api-reference</link><guid isPermaLink="true">https://voiddo.hashnode.dev/iimjobs-scraper-data-api-reference</guid><category><![CDATA[web scraping]]></category><category><![CDATA[api]]></category><category><![CDATA[json]]></category><category><![CDATA[Python]]></category><category><![CDATA[jobs]]></category><dc:creator><![CDATA[voiddo]]></dc:creator><pubDate>Mon, 26 Oct 2026 10:54:43 GMT</pubDate><content:encoded><![CDATA[<p>Scrape India finance, sales, consulting, HR and operations jobs from iimjobs.com: company, locations, experience in years, salary in lakhs when shown, skills, category, posting time, the employer's AmbitionBox rating and profile, and the description.</p>
<p>This is the reference for the Actor <code>v0iddo/iimjobs-scraper</code>: what is in every output row, what the input takes, and what a run costs. Values below come from a real run of the Actor.</p>
<h2>At a glance</h2>
<table>
<thead>
<tr>
<th></th>
<th></th>
</tr>
</thead>
<tbody><tr>
<td>Actor</td>
<td><code>v0iddo/iimjobs-scraper</code></td>
</tr>
<tr>
<td>Store page</td>
<td><a href="https://apify.com/v0iddo/iimjobs-scraper">IIMJobs Scraper</a></td>
</tr>
<tr>
<td>Output</td>
<td>one row per result, as JSON, CSV, Excel or HTML</td>
</tr>
<tr>
<td>Fields per row</td>
<td>31 (15 text, 8 number, 3 list, 3 true/false, 1 URL, 1 date)</td>
</tr>
<tr>
<td>Cap on results</td>
<td><code>maxItems</code> in the input</td>
</tr>
<tr>
<td>Price</td>
<td>$0.50 per 1,000 results</td>
</tr>
</tbody></table>
<h2>Output fields</h2>
<p>Each result is one row with these fields (fields that name people are left out):</p>
<table>
<thead>
<tr>
<th>Field</th>
<th>Type</th>
<th>Meaning</th>
<th>Sample value</th>
</tr>
</thead>
<tbody><tr>
<td><code>title</code></td>
<td>text</td>
<td>Title</td>
<td>Manager - Finance Digitalization</td>
</tr>
<tr>
<td><code>company</code></td>
<td>text</td>
<td>Company</td>
<td>Puma Energy</td>
</tr>
<tr>
<td><code>location</code></td>
<td>text</td>
<td>Location</td>
<td>Mumbai</td>
</tr>
<tr>
<td><code>experienceMin</code></td>
<td>number</td>
<td>Experience from</td>
<td>6</td>
</tr>
<tr>
<td><code>experienceMax</code></td>
<td>number</td>
<td>Experience to</td>
<td>11</td>
</tr>
<tr>
<td><code>salaryMinLakhs</code></td>
<td>number</td>
<td>Salary from (lakhs)</td>
<td></td>
</tr>
<tr>
<td><code>salaryMaxLakhs</code></td>
<td>number</td>
<td>Salary to (lakhs)</td>
<td></td>
</tr>
<tr>
<td><code>skills</code></td>
<td>list</td>
<td>Skills</td>
<td>["Accounting", "Finance and Accounts", "Financial Analysis"]</td>
</tr>
<tr>
<td><code>companyRating</code></td>
<td>number</td>
<td>Employer rating</td>
<td>2.8</td>
</tr>
<tr>
<td><code>postedAt</code></td>
<td>date</td>
<td>Posted</td>
<td>2026-10-23T07:03:29Z</td>
</tr>
<tr>
<td><code>url</code></td>
<td>URL</td>
<td>Posting</td>
<td><a href="https://www.iimjobs.com/j/puma-energy-manager-finance-digitalizatio">https://www.iimjobs.com/j/puma-energy-manager-finance-digitalizatio</a>...</td>
</tr>
<tr>
<td><code>jobId</code></td>
<td>number</td>
<td></td>
<td>1741422</td>
</tr>
<tr>
<td><code>site</code></td>
<td>text</td>
<td></td>
<td>iimjobs.com</td>
</tr>
<tr>
<td><code>postingTitle</code></td>
<td>text</td>
<td></td>
<td>Puma Energy - Manager - Finance Digitalization/Finance Transformation</td>
</tr>
<tr>
<td><code>companyLogo</code></td>
<td>text</td>
<td></td>
<td><a href="https://recruiter-static-content.s3.ap-south-1.amazonaws.com/Compan">https://recruiter-static-content.s3.ap-south-1.amazonaws.com/Compan</a>...</td>
</tr>
<tr>
<td><code>companyReviews</code></td>
<td>number</td>
<td></td>
<td>164</td>
</tr>
<tr>
<td><code>companyFounded</code></td>
<td>number</td>
<td></td>
<td>1997</td>
</tr>
<tr>
<td><code>companyEmployeesIndia</code></td>
<td>text</td>
<td></td>
<td>201-500</td>
</tr>
<tr>
<td><code>companyType</code></td>
<td>text</td>
<td></td>
<td>Foreign MNC</td>
</tr>
<tr>
<td><code>companyIndustry</code></td>
<td>text</td>
<td></td>
<td>Power</td>
</tr>
<tr>
<td><code>companyHeadquarters</code></td>
<td>text</td>
<td></td>
<td>Geneva, Switzerland</td>
</tr>
<tr>
<td><code>companyAbout</code></td>
<td>text</td>
<td></td>
<td>Puma Energy is a leading global energy business. Our downstream bus...</td>
</tr>
<tr>
<td><code>companyReviewsUrl</code></td>
<td>text</td>
<td></td>
<td><a href="https://www.ambitionbox.com/reviews/puma-energy-reviews">https://www.ambitionbox.com/reviews/puma-energy-reviews</a></td>
</tr>
<tr>
<td><code>locations</code></td>
<td>list</td>
<td></td>
<td>["Mumbai", "Thane", "Maharashtra"]</td>
</tr>
<tr>
<td><code>remote</code></td>
<td>true/false</td>
<td></td>
<td>false</td>
</tr>
<tr>
<td><code>salaryHidden</code></td>
<td>true/false</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td><code>mandatorySkills</code></td>
<td>list</td>
<td></td>
<td>["Financial Analysis", "Record To Report", "Order To Cash"]</td>
</tr>
<tr>
<td><code>category</code></td>
<td>text</td>
<td></td>
<td>Banking &amp; Finance</td>
</tr>
<tr>
<td><code>premium</code></td>
<td>true/false</td>
<td></td>
<td>true</td>
</tr>
<tr>
<td><code>descriptionText</code></td>
<td>text</td>
<td></td>
<td>Job Description: Location: Vikhroli Working days and Time: 5-day ...</td>
</tr>
<tr>
<td><code>scrapedAt</code></td>
<td>text</td>
<td></td>
<td>2026-10-25T10:49:01Z</td>
</tr>
</tbody></table>
<h2>One record</h2>
<pre><code class="language-json">{
  "jobId": 1741422,
  "site": "iimjobs.com",
  "title": "Manager - Finance Digitalization",
  "postingTitle": "Puma Energy - Manager - Finance Digitalization/Finance Transformation",
  "company": "Puma Energy",
  "companyLogo": "https://recruiter-static-content.s3.ap-south-1.amazonaws.com/CompanyLogos/centralised-21934.webp",
  "companyRating": 2.8,
  "companyReviews": 164,
  "companyFounded": 1997,
  "companyEmployeesIndia": "201-500",
  "companyType": "Foreign MNC",
  "companyIndustry": "Power",
  "companyHeadquarters": "Geneva, Switzerland",
  "companyAbout": "Puma Energy is a leading global energy business. Our downstream business includes fuels, aviation, lubricants and bitumen, with a strong...",
  "companyReviewsUrl": "https://www.ambitionbox.com/reviews/puma-energy-reviews",
  "locations": [
    "Mumbai",
    "Thane",
    "Maharashtra"
  ],
  "location": "Mumbai",
  "remote": false,
  "experienceMin": 6,
  "experienceMax": 11,
  "salaryHidden": true,
  "skills": [
    "Accounting",
    "Finance and Accounts",
    "Financial Analysis"
  ],
  "mandatorySkills": [
    "Financial Analysis",
    "Record To Report",
    "Order To Cash"
  ],
  "category": "Banking &amp; Finance",
  "premium": true,
  "postedAt": "2026-10-23T07:03:29Z",
  "descriptionText": "Job Description:\n\nLocation: Vikhroli\n\nWorking days and Time: 5-day WFO (post probation 1-day WFH)\n\nTime: 11:30 AM to 8:30 PM (Transportat...",
  "url": "https://www.iimjobs.com/j/puma-energy-manager-finance-digitalizationfinance-transformation-1741422",
  "scrapedAt": "2026-10-25T10:49:01Z"
}
</code></pre>
<h2>Input parameters</h2>
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Type</th>
<th>Required</th>
<th>Default</th>
<th>What it does</th>
</tr>
</thead>
<tbody><tr>
<td><code>keywords</code></td>
<td>array</td>
<td>no</td>
<td>["finance manager"]</td>
<td>Job titles, skills or words such as chartered accountant, product manager or brand manager.</td>
</tr>
<tr>
<td><code>category</code></td>
<td>string</td>
<td>no</td>
<td>any</td>
<td>Optional. With search terms it keeps the results of this category; alone it lists the category, for example Banking &amp; Finance or Consulting.</td>
</tr>
<tr>
<td><code>locations</code></td>
<td>array</td>
<td>no</td>
<td>["Mumbai"]</td>
<td>Optional cities or states such as Bangalore, Mumbai, Delhi NCR, Pune, Hyderabad, Chennai or Remote.</td>
</tr>
<tr>
<td><code>experienceMin</code></td>
<td>integer</td>
<td>no</td>
<td></td>
<td>Optional. Postings whose experience band overlaps the range you give.</td>
</tr>
<tr>
<td><code>experienceMax</code></td>
<td>integer</td>
<td>no</td>
<td></td>
<td>Optional. Upper end of the experience range in years.</td>
</tr>
<tr>
<td><code>postedWithin</code></td>
<td>string</td>
<td>no</td>
<td>any</td>
<td>Only postings from the last 3, 7, 15 or 30 days.</td>
</tr>
<tr>
<td><code>salaryOnly</code></td>
<td>boolean</td>
<td>no</td>
<td>false</td>
<td>Keep only postings whose employer shows the salary range.</td>
</tr>
<tr>
<td><code>remoteOnly</code></td>
<td>boolean</td>
<td>no</td>
<td>false</td>
<td>Keep only postings marked work from home or located in Remote.</td>
</tr>
<tr>
<td><code>includeDetails</code></td>
<td>boolean</td>
<td>no</td>
<td>true</td>
<td>Read each posting once more for its description text.</td>
</tr>
<tr>
<td><code>maxItems</code></td>
<td>integer</td>
<td>no</td>
<td>100</td>
<td>The run stops after this many result rows.</td>
</tr>
</tbody></table>
<h2>Cost per 1,000 rows</h2>
<p>$0.50 per 1,000 results. You pay per result row. There is no separate charge per run. Higher Apify plans pay less per result, down to $0.35 per 1,000.</p>
<table>
<thead>
<tr>
<th>Results</th>
<th>Cost at the listed price</th>
<th>Cost at the lowest plan price</th>
</tr>
</thead>
<tbody><tr>
<td>100</td>
<td>$0.05</td>
<td>$0.04</td>
</tr>
<tr>
<td>1,000</td>
<td>$0.50</td>
<td>$0.35</td>
</tr>
<tr>
<td>10,000</td>
<td>$5.00</td>
<td>$3.50</td>
</tr>
<tr>
<td>100,000</td>
<td>$50.00</td>
<td>$35.00</td>
</tr>
</tbody></table>
<p>The figures are the listed price times the number of results. The <code>maxItems</code> limit and the maximum cost setting in the run options both stop a run before it spends more than you planned.</p>
<h2>Get the rows as CSV over HTTP</h2>
<p>One request starts a run, waits for it and returns the dataset. The <code>format</code> parameter picks the file type and <code>fields</code> picks the columns. Replace the token with the one from Apify Console, Settings, Integrations.</p>
<pre><code class="language-bash">curl -X POST "https://api.apify.com/v2/acts/v0iddo~iimjobs-scraper/run-sync-get-dataset-items?format=csv&amp;fields=title,company,location" \
  -H "Authorization: Bearer YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"keywords": ["finance manager"], "locations": ["Mumbai"], "includeDetails": true, "maxItems": 20}'
</code></pre>
<h2>Good to know</h2>
<ul>
<li>One search runs per search term; postings are unique by ID across the whole run. Without search terms, a category lists every open posting of that category on iimjobs.com.</li>
<li>A search shows at most 100 pages of 50 postings. For a broad search, add locations or an experience range.</li>
<li>salaryMinLakhs and salaryMaxLakhs are the yearly salary in lakhs of rupees (1 lakh = 100,000 INR), only when the employer shows it; salaryHidden is true otherwise. Most employers hide it.</li>
<li>experienceMin and experienceMax are the years of experience the posting asks for. The experience filter keeps postings whose band overlaps your range.</li>
</ul>
<h2>Links</h2>
<ul>
<li>Actor on the Apify Store: <a href="https://apify.com/v0iddo/iimjobs-scraper">IIMJobs Scraper</a></li>
<li>Guide with the Python and JavaScript code: <a href="https://voidd0.github.io/iimjobs-scraper/">https://voidd0.github.io/iimjobs-scraper/</a></li>
</ul>
]]></content:encoded></item></channel></rss>