Your agent can't parse a platform's tangled markup; these return clean, structured items from specific sites.
50+ ready-to-run scrapers that pull clean, structured items from specific platforms: Instagram, TikTok, Facebook, LinkedIn, YouTube, Reddit, Google Maps and Search, Amazon, eBay, Booking, Airbnb, Zillow, Indeed, Glassdoor, Trustpilot, and more. Async heavy scrapers return a continuation_token; pass it back to resume polling.
Addresses to scrape - should be in format 123 Main St, City, State
URLs to scrape - should be in format https://www.zillow.com/homedetails/Address/12345678_zpid/
Since Zillow uses different methods to fetch properties for sale, for rent and sold, the Actor needs to know the status of the properties in Start URLs. If you this is provided incorrectly, the Actor will figure out the correct status and use it, but it will require additional requests to Zillow.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
When you input a URL like https://www.zillow.com/b/160-beach-117-st-rockaway-park-ny-9VzB5T/, you can choose to scrape details of individual units in the building, instead of just generic building information.
For easy integration, this actor can use output of these Zillow search scrapers to scrape more details: Zillow ZIP Code Search Scraper.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get the Zillow listing details for this property URL"
}
}'askfaro describe site-scrapers/zillow-scraper
Install pip install askfaro-cli, then askfaro auth login.
Country for job search.
Any combination of city, zip code or locality for search. Used together with position/keywords.
Any combination of positions or keywords for search. Can be used together with Start URLs - both will be scraped independently, each limited by Max job listings per search.
List of URLs that will be scraped. Can be main website URL, category/search URLs, company jobs URL (in the format of `https://www.indeed.com/cmp/Google/jobs`) or detail/product URLs. Can be combined with keyword search - both will execute independently.
Maximum number of job listings to scrape for each keyword search and each Start URL. When both are used together, each is limited independently by this value.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
If true, will also navigate to company page of each job posting, to scrape company info not available directly on job posting page.
If true, only unique job listings will be scraped.
If true, will follow redirects of Indeed's externalApplyLink and output the final one.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find software engineer jobs on Indeed in Austin"
}
}'askfaro describe site-scrapers/indeed-scraper
Install pip install askfaro-cli, then askfaro auth login.
Will apply the 3D filter for search
Will apply the 4K filter for search
Will apply the HD filter for search
Will apply the Creative Commons filter for search
Will apply the 360 degrees filter for search
Will apply the HDR filter for search
Will apply the Live filter for search
Will apply the VR180 filter for search
Will apply the Purchased filter for search
Enter a link to a YouTube video, channel, playlist, hashtag or search results page. You can also import a CSV file or Google Sheet with a list of URLs. Note: Input from Search term will be ignored when using this option. If you only want to scrape shorts/streams, set Maximum search results to 0, otherwise they represented number of regular videos requested
Select Youtube video type filter for search
Select Youtube upload date filter for search
Limit the number of videos you want to crawl. If you scrape a channel, acts as a limit for regular videos.
Will apply the Location filter for search
Will apply the Subtitles/CC filter for search
Select Youtube video length filter for search
Maps to the sorting buttons on the top of the channel's 'Videos', 'Shorts' and 'Live' pages.
Select Youtube sorting parameter for search
If set to true, the scraper will save the downloaded subtitles to the key-value store. Note: Download subtitles must be turned on for this option to work.
Enter search terms just like you would enter it in YouTube's search bar.
Only posts uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 day will get you only today's posts, 2 days - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to NEWEST
Select in what format you want to download subtitles
Limit the number of Stream videos you want to crawl.
Limit the number of Shorts videos you want to crawl.
If set to true, the scraper will download subtitles for the video and convert them to .srt format.
Language to download subtitles in. Note: Download subtitles must be turned on for this option to work.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
If set to true, automatically generated subtitles are preferred to user subtitles. Note: A subtitle language must be selected and download subtitles must be turned on for this option to work.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape video details and view counts from a YouTube URL"
}
}'askfaro describe site-scrapers/youtube-scraper
Install pip install askfaro-cli, then askfaro auth login.
Idealista Property Scraper (Spain, Italy, Portugal).
Specifies proxy servers that will be used by the scraper in order to hide its origin. For details, see Proxy configuration in README.
Maximum number of items that will be scraped.
URLs to start with.
Idealista silently caps each search query at 1500 listings — confirmed against the iOS app itself; the limit lives on the API, not on the website. With this enabled (the default), the actor probes each start URL and, when the total would exceed 1500, automatically splits the search into smaller price brackets (e.g. 240k–360k, 360k–540k, 540k+) and merges the results into one dataset. Searches with under 1500 hits skip the splitting entirely (one extra probe request). Turn this OFF if you want the legacy behavior — a single un-fragmented query that stops at the cap.
Maximum number of pages that can be processed at the same time.
Minimum number of pages that will be processed at the same time.
If checked, it will only scrape newly listings compared to what has been scraped in previous runs.
Number of times the crawler will retry a failed request before giving up.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find apartments for sale in Madrid on Idealista"
}
}'askfaro describe site-scrapers/idealista-scraper
Install pip install askfaro-cli, then askfaro auth login.
Scrape image details from Google Images.
The queries of searches you want to get the data from.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
The maximum amount of results to result per every query.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape image results from Google Images for 'golden retriever'"
}
}'askfaro describe site-scrapers/google-images-scraper
Install pip install askfaro-cli, then askfaro auth login.
Results details will show in this language.
List of place IDs. You can add place IDs one by one or upload a list using the Bulk edit option.
List of URLs to be crawled. They can be search URLs, place URLs or review detail URLs. Valid Google Maps place URLs must contain one of the following subpaths: /maps/search, /maps/place or /maps/reviews. This feature also supports uncommon URL formats such as: google.com/maps?cid=***.
Max number of reviews per place to scrape. If you want to scrape all reviews, remove the prefilled value.
Define how reviews should be sorted.
This setting allows you to get personal data about the reviewer (their ID, name, URL, and photo URL) and about review (URL). Note: review ID (reviewId) is always included regardless of this setting. ⚠️ Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
Select whether you want all reviews (from Google, Tripadvisor, etc.) or only reviews from Google
Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). JSON input also supports adding time in both absolute (ISO standard, e.g. `2024-05-03T20:00:00`) and relative (e.g. `3 hours`) formats. Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `minutes`, `hours`, `days`, `weeks`, `months`, `years`. ⚠️ Heads up: If this parameter is specified, you must choose the 'Newest' sort by value. The reason for this is that with this parameter entered, the actor stops scraping reviews as soon as it finds the first review that's older than the specified date. If the sorting is not set to 'Newest', it might encounter a review older than the specified date before it reaches the desired review count and not scrape the desired amount of reviews.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get Google Maps reviews for a restaurant"
}
}'askfaro describe site-scrapers/google-maps-reviews
Install pip install askfaro-cli, then askfaro auth login.
Add Instagram usernames, profile URLs, IDs, or direct reel URLs. Each item will be processed individually.
Set how many reels should be scraped per profile. For example, if set to 5, the scraper will extract up to 5 reels from each profile. This setting is ignored when scraping direct reel URLs.
Enable this option if you want to exclude pinned reels from the overall results.
Extract a text transcript of the reel audio for content analysis. This add-on feature is charged per minute of audio.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Extract the number of shares for each reel. Available for paying users only. Upgrade to the Starter plan to unlock it.
Scrape reels from the provided date up to the present. Supported formats include `YYYY-MM-DD`, full ISO timestamps (e.g. `2025-09-23T10:02:01`), or relative time such as `1 day`, `2 weeks`, or `3 months`. All times are evaluated in UTC.
Download the reel video and store a local copy before Instagram links expire. This add-on feature is charged per 1 MB downloaded.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape Instagram Reels from a profile with view counts"
}
}'askfaro describe site-scrapers/instagram-reel-scraper
Install pip install askfaro-cli, then askfaro auth login.
Proxy servers used for outbound requests. Trustpilot's mobile gateway is generally not blocked, so proxy is optional but recommended for high-volume runs.
How each review stream is ordered. `auto` picks `recent` whenever a start date is set (so the cutoff actually short-circuits pagination) and `relevancy` otherwise.
Per-input cap. With 3 inputs and `maxItems=30`, you can collect up to 90 reviews total (30 per input). When 'Expand regional domains' is on, this budget is shared across the primary BU and all its regional siblings.
Format YYYY-MM-DD, e.g., 2022-02-20. Used as a hard chronological cutoff: when set, the scraper switches to `sort=createdAt:desc` and short-circuits pagination as soon as it crosses the date.
Enter one item per row. Each value can be a Trustpilot `/review/` or `/users/` URL, a company URL, or a bare slug such as `bankfive`. Wrong `/review/` slugs trigger a Trustpilot search fallback. **Note on locale subdomains:** localized hosts (e.g. `fr.trustpilot.com`, `it.trustpilot.com`) are normalized to `www.trustpilot.com` so you don't accidentally miss reviews — Trustpilot's main `.com` page is multilingual and contains every review the locale subdomains do, plus more. If you want reviews in one specific language, use the **Languages to include** filter (`filterLanguages`) instead; submitting a locale subdomain alone won't restrict by language.
Limit reviews to specific star ratings. Leave empty to include all ratings (1–5).
One brand name per row, e.g. `nike`, `noom`, `marcovasco`. The scraper resolves each to its canonical business unit and (when 'Expand regional domains' is on) also sweeps every regional sibling on Trustpilot's index.
When enabled, each review item is enriched with the `stats` block (total review count, per-star rating distribution, …).
Maximum number of inputs being processed in parallel (each input runs many sequential page fetches).
Minimum number of inputs that will be processed at the same time.
ISO 3166-1 alpha-2 country codes to keep, e.g. `US`, `GB`, `DE`. Matched against the reviewer's profile country (`consumer.countryCode`). Leave empty to keep all countries. The gateway has no server-side country filter, so this is applied client-side — non-matching reviews still cost a request and the drop count is logged in the per-URL summary.
Server-side rolling date window. Equivalent to the iOS app's 'Date posted' filter. The gateway only accepts these enums; anything else returns HTTP 400. For an exact cutoff, use the 'Only scrape reviews newer than' field below — they compose (the more restrictive one wins).
ISO 639-1 codes (e.g. `en`, `de`, `fr`, or `unknown` for reviews Trustpilot couldn't classify). Leave empty to auto-discover and sweep all languages found on each business unit. **This is the right knob to use if you want to restrict results to one language** — locale subdomains in start URLs (e.g. `it.trustpilot.com`) are intentionally normalized away to avoid silently losing reviews, so language filtering must be explicit here.
Controls the language scope sent to Trustpilot's gateway. **Enabled (default)**: requests `language=all`, fetching every language available on the BU — maximizes coverage but mixes locales (e.g. a `.com` URL will return Italian, French, German reviews alongside English). **Disabled**: no `language` param is sent, so the gateway returns its own default slice — this is typically what `trustpilot.com/review/` shows a visitor in their browser (filtered by their `Accept-Language`). The multi-language sweep that fires on large BUs is also skipped when disabled. For a specific language, use **Languages to include** below instead — an explicit filter overrides this setting.
Equivalent to the iOS app's 'Reviews with replies' toggle. Sent server-side as `onlyWithReplies=true`, so the gateway prunes reviews without replies before responding.
Number of times the scraper will retry a failed mobile-gateway request before giving up.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Equivalent to the iOS app's 'Verified reviews' toggle. Sent server-side as `onlyVerified=true`, so the gateway prunes non-verified reviews before responding — no wasted requests. The canonical output's `isVerified` reflects truth (derived from `verificationLabel.type === 'verified'`; the raw response boolean is misleading).
When enabled, each review item is enriched with the `transparency` block (collecting method distribution, stars breakdown by method, monthly data, etc.).
After resolving each input, also fetch every regional sibling on Trustpilot's index that matches the same brand (e.g. `nike` → `nike.com`, `nike.uk`, `nike.de`, `nike.dk`, …). Strict displayName matching keeps unrelated brands out. Shared `maxItems` budget across siblings.
When enabled, each review item is enriched with the `company` block (display name, identifying domain, country, total review count, …).
On-demand enrichment. When enabled, each review's `company` block is augmented with `consumerAlert`, `consumerAlerts`, `hasCollectedIncentivisedReviews`, and (when still exposed by Trustpilot) `basiclinkRate`. Costs one extra HTTP request per unique business unit. Has no effect unless 'Include company details in output' is also enabled.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get Trustpilot reviews for a company"
}
}'askfaro describe site-scrapers/trustpilot-reviews
Install pip install askfaro-cli, then askfaro auth login.
Select the kind of Pinterest results to collect from your keyword searches. Use all pins for broad visual discovery, or choose videos, boards, or profiles when your research needs a narrower result type.
Control how many records should be saved for each keyword search. Use a smaller number for fast validation or sampling, and increase it when you need a larger dataset for analysis.
Enter one or more keywords, topics, styles, brands, products, or themes to search on Pinterest. Use keywords when you want discovery-based collection instead of starting from known URLs.
Paste Pinterest URLs when you already know the exact pages to collect. You can include search result pages, category pages, boards, profiles, individual pins, and video pins in the same run for precise source control.
When enabled, the actor classifies each pin or video pin using its title, image alt text, descriptions, hashtags, and destination domain. Matching records include content_category_label, content_category_path, content_category_confidence, and content_category_match_type.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Choose a proxy configuration when you need region-specific access or more controlled connection behavior. Leave the default Apify proxy setup in place unless your workflow requires a different network configuration.
When enabled, the actor analyzes each pin or video pin using its title and image alt text, then adds sentiment_score, sentiment_score_normalized, sentiment_confidence, and sentiment_label to those records.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Search Pinterest for 'minimalist kitchen' pins"
}
}'askfaro describe site-scrapers/pinterest-search
Install pip install askfaro-cli, then askfaro auth login.
Just add one or more TikTok hashtags and the scraper will collect data about videos containing this hashtag: likes, users, followers and more. You can enter the hashtags one by one, or use the Bulk edit section to add a prepared list.
Add the URLs of tiktok videos you want to scrape. You can paste video URLs one by one, or use the Bulk edit section to add a prepared list.
Add one or multiple TikTok usernames or user IDs you want to scrape. You can enter the usernames one by one, or use the Bulk edit section to add a prepared list.
Optional charged filter. Scrapes only videos with less hearts than the number you add. Doesn't work with date filters
Optional charged filter. Scrapes only videos with no less hearts than the number you add. Doesn't work with date filters
Your keyword will apply to both videos and profiles. Use the Search sorting field below to specify whether you want your search to apply to top content, videos or users. As for your query's format, you can use any query that works on TikTok.
By default, this scraper will sort the search results by whatever shows up in the Top section of TikTok search. But you can narrow it down: if you want to apply your search query to just videos, use Video, just profiles - Profile.
Optional charged filter. Only videos uploaded before or on this date will be scraped.
Select Latest to scrape the most recent videos first, Oldest - the oldest videos first, Popular - the most popular videos first. Date filters only work with Latest and Oldest. Only supported for Videos section
Add the number of tiktoks you want to scrape per hashtag, profile, or search query. This field is applicable to #️⃣ Hashtags, 😎 Profiles, and 🔍 Search.
The number of comments extracted from every result. Due to TikTok API limitations, the actual number of scraped comments may differ, especially for posts with thousands of comments. The link to the dataset will be under a field commentsDatasetURL in the output.
Country to use with proxy. Use it in case you want to scrape posts only available for some country.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Tick to exclude pinned posts from profiles. Pinned posts are usually the first videos on a profile's page.
Optional charged filter. Select how you want the search results to be sorted when searching for videos. Only valid with `/video` search section.
Only applies to profile searches. In this case ignore the 💯 Number of videos section and choose the number of profiles you want to scrape here.
Tick to scrape related videos for the post URLs you provide. - The maximum number of scraped related videos is set by the `resultsPerPage` count. - Note that this only works for direct video URLs from the `postURLs` field.
The maximum number of replies you want from a single comment. Note: Successful extraction of all desired replies is currently not guaranteed.
Tick to download TikTok video cover images (thumbnails).
This is a charged add-on. Tick to download TikTok videos.
Name (or ID) of the Key Value Store where the videos and other media like thumbnails will be stored. Omit to store in the default one. Using this option will provide a named Key-Value store can help bypass data retention and store the content forever until the store is manually deleted. The Key-Value store's name can consist of a versatile combination of uppercase letters, lowercase letters, digits, or hyphens, all without any spaces.
Optional charged filter. Only videos uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 will get you only today's posts, 2 - yesterday's and today's, and so on.
If a profile has reposted videos, you can scrape them by selecting 'Reposts'
Tick to download authors' profile pictures.
Optional charged filter. Select a date range in which to search for videos. Only valid with `/video` search section.
Scrapes number of 'Followers' profiles requested from the inputted profiles. You can find the link to the dataset under the followDatasetUrl field in the output. If you want to scrape only Followers/Following profiles, go to our TikTok Followers Scraper.
Scrapes number of 'Following' profiles requested from the inputted profiles. You can find the link to the dataset under the followDatasetUrl field in the output. If you want to scrape only Followers/Following profiles, go to our TikTok Followers Scraper.
The maximum number of top-level (non-reply) comments you want from a single post.
Choose how to handle subtitles and audio transcription for input videos. Subtitles are provided by TikTok for some videos, and transcription means that this Actor will use speech-to-text AI to generate video transcript. Transcripts are charged as an extra event according to your plan.
Tick to download cover images of sounds used in posts.
Tick to download TikTok slideshow images.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape TikTok videos for a hashtag"
}
}'askfaro describe site-scrapers/tiktok-scraper
Install pip install askfaro-cli, then askfaro auth login.
Insert a URL of a valid Facebook group. Only public Facebook groups can be scraped.
Select sorting order by which the posts should be scraped. Please note that the Number of results field will be applied to New posts only. The BuySell items sorting will return results for BuySell groups only.
Select the number of posts you want to scrape. If this limit is not set, as many results as possible will be returned.
The scraper will extract Facebook posts by this year. To use this field, you need to fill in the Search by letter field above ↑.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Scrapes post from the provided date to the present day. The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 days, 2 months, 3 years. The JSON input also supports adding time units (UTC timezone): Full or partial ISO timestamp (e.g., `2025-09-23T10:02:01`) as absolute time and relative time, e.g., `1 hour` or `2 minutes`.
Without logging in, search results are VERY limited, so searching by word will return nothing in most cases. To get more messages, it is recommended to use a one or two letter search and change the year.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape posts from a public Facebook group"
}
}'askfaro describe site-scrapers/facebook-groups-scraper
Install pip install askfaro-cli, then askfaro auth login.
Insert the destination name here
Hotel attribute by which the results will be ordered
Select the check-in date in format YYYY-MM-DD or {number} {unit}. - ***Input the date in the UTC timezone!*** Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.
Select the check-out date in format YYYY-MM-DD or {number} {unit}. - ***Input the date in the UTC timezone!*** Booking uses the UTC timezone for all check-in and check-out dates, so we do the same.
Currency to be set on the website
Language to be set on the website (does not apply to reviews)
Limit the number of places to be scraped. Input a value over `1000` to activate the 'overcome 1000 results limit' feature.
Minimum rating of a hotel in "8.4" format. - Searching below a rating of `5` may be very inefficient, as it's not natively supported by Booking.
Insert URLs to start with instead of a destination name. Hotel search URL's filters will be applied, except for the ones in the scraper input. You can also use shared list URLs. These links are generated for properties you saved in your Booking account.
Number of days to flex around the check-in and check-out dates. E.g. setting `3` will scrape hotels with a possible date range up to 3 days before and 3 days after the selected dates. - **Applied per URL:** used for search-style start URLs (destination, region, coordinates) or a `search` query, and **ignored for direct hotel URLs** (`/hotel/...html`), where only the exact `checkIn`/`checkOut` dates are used.
Insert the minimum and maximum price per night, e.g. '100-150' or '100+.'
Choose type of property
Only scrape places with the selected stars count. Also includes Booking's apartment-like properties 'square' rating.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Enables scraping of additional fields for each hotel: surroundings (nearby points of interest and distances) and roomOfferings (available room types with their details).
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find hotels in Paris on Booking.com"
}
}'askfaro describe site-scrapers/booking-scraper
Install pip install askfaro-cli, then askfaro auth login.
Insert the username or URL of any profile you want to get posts from. You can also paste the post URLs.
This is the maximum number of posts you want to scrape per profile. If you set it to 5, you'll get 5 posts for each profile you've included. This setting does not apply if you're scraping by post URLs.
Choose the data package you want to extract. Please note the Detailed data are paid extra.
Check if you do not want to save pinned posts.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Limit how far back to the history the scraper should go. The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 days, 2 months, 3 years. All time values are taken in UTC timezone
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape posts from an Instagram profile"
}
}'askfaro describe site-scrapers/instagram-post-scraper
Install pip install askfaro-cli, then askfaro auth login.
Get reviews ONLY with a specific rating (1-5)
How to sort the reviews
Only include reviews up to this date (YYYY-MM-DD)
Filter reviews containing specific keywords
Filter reviews by language (e.g. 'en', 'fr', 'de')
Page number to start scraping from
App package name (e.g., 'com.supercell.brawlstars') or full Google Play Store URL
Filter reviews by app version (e.g. '65.165', '64.226')
Device type to scrape reviews from
Maximum number of reviews to scrape (-1 for no limit). Non-paying Apify users are limited to 5 total runs and 500 total reviews across all runs. A free-user run counts even if it returns zero matching reviews.
Only include reviews from the last N days (0 = no limit)
Only include unique reviews (by reviewId)
Filter reviews by rating (e.g. 1,2,3,4,5)
Maximum number of pages to scrape (-1 for all available)
Number of reviews per page to scrape
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get Google Play Store reviews for an app"
}
}'askfaro describe site-scrapers/play-store-reviews
Install pip install askfaro-cli, then askfaro auth login.
Maximum number of companies to scrape. The actor will stop scraping when this limit is reached.
Filter Companies by these LinkedIn locations. Example: `San Francisco`. LinkedIn does not always understand your text queries. For example for "UK" query it will apply "Ukraine" location, so you should use "United Kingdom" in this case. Try this out first in the location filter input of LinkedIn search at `https://www.linkedin.com/search/results/people/?geoUrn=%5B%22103644278%22%5D` - we will use the first suggestion from the autocomplete popup when you type your location
The page number to start scraping from. The last page is 20, according to LinkedIn limitations.
The number of search pages to scrape. Each page contains 50 companies. The last page is 20, according to LinkedIn limitations.
Filter Companies by these company size ranges.
Filter Companies by these LinkedIn industry IDs. Example: `4` for 'Software Development'. Full list: `https://github.com/HarvestAPI/linkedin-industry-codes-v2/blob/main/linkedin_industry_code_v2_all_eng_with_header.csv`
Choose the mode for scraping LinkedIn companies. The Short mode provides basic information, while the Full mode includes full detailed company data.
Query to search LinkedIn companies. (e.g., `marketing`). The query supports search operators
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Search LinkedIn for companies in the fintech industry"
}
}'askfaro describe site-scrapers/linkedin-company-search
Install pip install askfaro-cli, then askfaro auth login.
Google Search Results Scraper.
Limits the search to a specific site, such as: site:example.com. Note that the site filter takes precedence over the relatedToSite filter. If both filters are set, the relatedToSite filter will be ignored and not added to the search queries.
Use regular search words or enter Google Search URLs. You can also apply advanced Google search techniques, such as AI site:twitter.com or javascript OR python. You can also define selected search filters as separate fields below (in the Advanced search filters section). Just ensure that your queries do not exceed 32 words to comply with Google Search limits.
If checked the HTML of the Google Search results pages will be stored to the default dataset, under the html property. This is useful if you need to process the HTML, but it makes the dataset large.
Filters results from after the specified date. Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `days`, `weeks`, `months`, `years`. You should avoid combining this filter with the `quickDateRange` filter to prevent conflicts.
Filters results of specific file types using the filetype: operator, such as filetype:pdf. You can select multiple file types as well. They will be combined with the OR operator, for example: filetype:doc OR filetype:txt. If you need to use a file type that is not in the list (such as a source code file type), you can include it in your custom queries from the queries field, using the filetype: operator.
Filters results from before the specified date. Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `days`, `weeks`, `months`, `years`. You should avoid combining this filter with the `quickDateRange` filter to prevent conflicts.
Filters pages with specific words in the URL. The scraper uses the inurl: operator, even for multiple words (e.g. recipe site:allrecipes.com inurl:apple inurl:pie). There's also a allinurl: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allinurl: operator specifically, you can include it in your custom queries from the queries field.
Specifies the country used for the search and the Google Search domain (e.g. google.es for Spain). By default, the Actor uses United States (google.com).
Filters pages with specific words in the text. The scraper uses the intext: operator, even for multiple words (e.g. cartoon site:wikipedia.com intext:cat intext:mouse). There's also a allintext: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allintext: operator specifically, you can include it in your custom queries from the queries field.
Scrapes results from Google AI Mode — Google's dedicated AI-powered search interface on google.com, distinct from the standard AI Overviews snippets that appear in regular search results. AI Mode provides deeper, conversational answers with cited sources. Essential for Answer Engine Optimization (AEO) and Generative Engine Optimization (GEO) strategies — track how your brand or content appears when users switch to Google's AI search experience. An additional fee applies per successful result retrieved. See the Pricing tab for your subscription tier rate.
Fetches an AI answer from Google Gemini (gemini.google.com) — Google's standalone AI assistant, separate from Google Search. Use this for cross-platform comparison to identify narrative differences and coverage gaps across AI platforms. Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.
If checked, all of the results (organicResults, paidResults, suggestedResults) will contain Base64-encoded icon image data if found.
Language of the Google Search interface (menus, buttons, etc. - not the search results themselves). Passed to Google Search as the hl URL query parameter. From Google Reference: You can use the hl request parameter to identify the language of your graphical interface. The hl parameter value may affect search results, especially on international queries when language restriction (using the lr parameter) is not explicitly specified. Read more here.
The code for the exact location for the Google search. It's passed to Google Search as the uule URL query parameter. You can use the UULE code generator. Learn more about emulating local search.
Filters pages with specific words in the title. The scraper uses the intitle: operator, even for multiple words (e.g. recipe site:allrecipes.com intitle:"easy apple" intitle:pie). There's also a allintitle: operator available, but it's problematic when combined with other search filters, so the scraper avoids using it. If you need to use the allintitle: operator specifically, you can include it in your custom queries from the queries field.
Enable ChatGPT to retrieve AI-generated answers powered by OpenAI's search model. This feature is designed for cross-platform analysis, allowing you to directly compare other AI search model results against ChatGPT's perspective to identify narrative differences, coverage gaps, and search engine biases. The output includes query fan-out under queryFanOut, showing additional search queries the model generated to answer your question. Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.
Enable Copilot to retrieve AI-generated answers powered by Microsoft Copilot.
If checked the scraper will return results for mobile version of Google search. Otherwise desktop results are returned.
Filters pages related to a specific site, such as: related:example.com. Note that the site filter takes precedence over the relatedToSite filter. If both filters are set, the relatedToSite filter will be ignored and not added to the search queries.
Enable extraction of paid results (Google Ads). This feature improves ad detection accuracy by using an ad-specialized proxy to perform up to 3 retries for each search query. Best used for queries likely to show ads. An extra cost per search page applies when enabled, regardless of ads found. Pricing depends on your Apify subscription plan.
Filters results from a specific date range. d[number] specifies the number of past days (e.g. the past 10 days can be written as d10). The same applies to hours, weeks, months, and years: h[number], w[number], m[number], y[number]. Example for the past year: 'y1' or even 'y'. The value is passed to Google Search using the tbs URL query parameter, prefixed with qdr:. You should avoid combining this filter with the beforeDate and afterDate filters to prevent conflicts.
Restricts search results to pages in a specific language. For example, choosing 'German' results in pages only in German. Passed to Google Search as the lr URL query parameter. Read more here.
If checked, the scraper will search for the exact phrase in the query. This is done by wrapping the query in quotes. Note that this may return fewer results. Also note that if you're using operators such as OR or AND, the whole query will be wrapped in quotes, such as "Windows AND macOS". If you want to search for queries such as "Windows" AND "macOS", you need to specify them directly in the queries field.
Maximum number of pages to scrape per search query. Each page contains approximately 10 results.
Enable Perplexity to retrieve AI-generated answers and citations using the Sonar model. This feature is designed for cross-platform analysis, allowing you to directly compare other AI search model results against Perplexity's perspective to identify narrative differences and coverage gaps. Note: An additional fee applies per result when this feature is active. Please refer to the Pricing tab for your specific rate.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
If checked the HTML of the Google Search results pages will be stored to the default key-value store and links to the files stored to the dataset under the htmlSnapshotUrl property. This is useful for debugging since you can easily view the pages in the browser. However, the use of this feature may slow down the Actor.
If checked the lower quality results that Google normally filters out will be included.
When enabled, skips extraction of traditional organic search results and focuses exclusively on AI-powered search features (Google AI Mode, Perplexity AI, ChatGPT search, Copilot search, Gemini search). Use this option when you only need AI-generated answers and want to reduce processing time and costs by excluding standard search results.
You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per domain (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.
When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an emailVerification object with the verification result and quality assessment. Requires business leads enrichment to be enabled.
Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees. This setting allows you to set the maximum number of leads records you want to scrape per each domain found. By default, it's set to 0 which means that no leads information will be scraped. ⚠️ Note that some of the fields contain personal data. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney. To keep your leads relevant, we automatically filter out large chains and online platforms (e.g., social media, retail giants, food delivery services). ⚠️ Cost warning: This is a multiplier. Requesting 10 leads for 1,000 domains will attempt to find 10,000 total leads. You are only charged for leads successfully found.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape Google search results for 'best CRM software'"
}
}'askfaro describe site-scrapers/google-search-scraper
Install pip install askfaro-cli, then askfaro auth login.
Country where the target job listings are located
Job title, skill, or company name to search for
Target currency for converting salary figures
Search radius in miles around the specified location
Employment type to filter by: full-time, contract, etc.
City or region to focus the job search results on
Maximum number of jobs to return
Restrict results to remote-friendly positions only
Only include listings posted within this timeframe
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape job listings from Glassdoor"
}
}'askfaro describe site-scrapers/glassdoor-scraper
Install pip install askfaro-cli, then askfaro auth login.
Number of listings to scrape (default: 100)
Deprecated: alias for the single-keyword `keyword` field. Use the `keywords` array instead. Accepted for backward compatibility with callers that send `search`. Backslash-escaped quotes (\") in the value are unescaped before the search runs.
Single search keyword. Deprecated: use the 'keywords' array field instead.
eBay site to scrape from
One or more search keywords. Each keyword runs as a separate search with the same filters applied to all.
Maximum sold price filter (search-page filter).
Minimum sold price filter (search-page filter).
Sort order for the sold search results page.
eBay category filter
Number of days back to scrape sold listings (default: 30)
Search-page item location filter.
Search-page condition filter.
Optional subcategory filter. Displayed as "Category -> Subcategory" for easier selection. If set, subcategory takes priority over the Category field (overrides _sacat). The output record will reflect the effective category ID and label used.
If enabled, visits each item detail page to extract item specifics, product details, breadcrumbs, condition, and other fields. Increases runtime and proxy usage.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get recent eBay sold prices for a collectible"
}
}'askfaro describe site-scrapers/ebay-sold-listings
Install pip install askfaro-cli, then askfaro auth login.
Country code for results (e.g., 'us', 'uk', 'fr', 'de'). Default: 'us'
Language code for results (e.g., 'en', 'fr', 'de', 'es'). Default: 'en'
Number of adult passengers (default: 1, minimum: 1)
Number of infant passengers (default: 0, minimum: 0)
Comma-separated list of preferred airline codes (e.g., 'UA,AA,DL'). Optional.
Number of child passengers (default: 0, minimum: 0)
Currency code for prices (e.g., 'USD', 'EUR', 'GBP'). Default: 'USD'
Maximum number of pages to fetch (0 = no limit, default: 1).
Maximum price filter in the specified currency. Optional.
Maximum number of stops (0 = direct flights only, 1 = one stop max, null = no limit). Optional.
Arrival airport code(s), comma-separated for multiple (e.g., 'JFK', 'SFO', 'LAX,SEA'). Required for one-way and round-trip searches. Not used for multi-city trips.
Optional filename to save results. If not provided, will auto-generate based on route and parameters.
Return date in YYYY-MM-DD format (e.g., '2025-11-30'). Optional, used for round-trip searches.
Departure airport code(s), comma-separated for multiple (e.g., 'LAX', 'JFK', 'CDG,ORY'). Required for one-way and round-trip searches. Not used for multi-city trips.
If true, filters out Economy flights that include carry-on bags and free seat selection. Optional.
Departure date in YYYY-MM-DD format (e.g., '2025-11-25'). Required for one-way and round-trip searches. Not used for multi-city trips.
JSON string for multi-city trips. Format: [{"departure_id":"...","arrival_id":"...","date":"..."},...]. When provided, departure_id, arrival_id, and outbound_date are not required.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
If true, performs extra requests to retrieve detailed booking options (booking links, baggage fees, etc.). This increases API usage and is billed per booking option returned.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find flights from New York to London next month"
}
}'askfaro describe site-scrapers/google-flights
Install pip install askfaro-cli, then askfaro auth login.
Search for Instagram hashtags, profiles, or places. Use `#` for hashtags, e.g. `#travel`.
Add one or more Instagram URLs to scrape. URL format must match your content type:/p/ for posts and comments/reel/ for reels/username/ for profile details Leave blank if using the search query instead.
Hashtag search returns posts tagged with that term. Profile search returns matching accounts. Place search returns matching locations.
**Posts** returns a feed of content. **Profile, hashtag, or place details** returns metadata about the page: follower count, bio, post count, and profile picture. Comments only work with post URLs, e.g. `instagram.com/p/ABC123xyz/` not `instagram.com/username/`.
Set how many profiles, places, or hashtags to find. To limit posts per result, use Results limit per URL. Higher values increase compute usage and cost.
Set how many posts or comments to scrape per Instagram URL. Higher values increase compute usage and cost. Maximum 50 comments per post. Instagram may return fewer than 15 comments on some posts. Use `1` to retrieve a single post per page.
This applies only to feed items. Adds a dataSource field to each result: profile posts are labeled `profile`, and tag posts are labeled `hashtag`.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Limit how far back to scrape. Enter a date in `YYYY-MM-DD`, ISO format, or as a relative value, e.g. `1 day`, `2 months`, `3 years`. Times are in UTC, not local time. New York is UTC-5 in winter, UTC-4 in summer. Pinned posts may still appear even with this filter set.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape an Instagram profile's posts and follower count"
}
}'askfaro describe site-scrapers/instagram-scraper
Install pip install askfaro-cli, then askfaro auth login.
Enter the city where the data extraction should be carried out, e.g., Pittsburgh. ⚠️ Do not include State or Country names here. ⚠️ Automatic City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need that, set up the location using Country, State, County, City, or Postal code. For an even more precise location definition (, head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape.
Set a state where the data extraction should be carried out, e.g., Massachusetts (mainly for the US addresses).
Set the county where the data extraction should be carried out. ⚠️ Note that county may represent different administrative areas in different countries: a county (e.g., US), regional district (e.g., Canada) or département (e.g., France).
Use this to exclude places without a website, or vice versa. This option is turned off by default.
Results details will show in this language.
Max 300 results per search URL. Valid format for URLs contains google.com/maps/. This feature also supports uncommon URL formats such as: google.com/maps?cid=***, goo.gl/maps, and custom place list URL.
Set the postal code of the area where the data extraction should be carried out, e.g., 10001. ⚠️ Combine Postal code only with 🗺 Country, never with 🌇 City. You can only input one postal code at a time.
Set the country where the data extraction should be carried out, e.g., United States.
Set the number of questions per place you expect to scrape. If you fill in 0 or leave the field empty, only the first question and answer will be scraped. To extract all questions, type 999 into the field. ⚠️ Note that some of the fields contain personal data.
Define location using free text. Simpler formats work best; e.g., use City + Country rather than City + Country + State. Verify with the OpenStreetMap webapp for visual validation of the exact area you want to cover. 💡 Pro tip: Always specify a location when searching for specific place names in the 🔍 Search terms field above. This helps narrow down results to the geographic area you're interested in and prevents getting results from unrelated locations. ⚠️ Automatically defined City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need to define the whole city area, head over to the 📡 Geolocation parameters* section instead to select Country, State, County, City, or Postal code. For an even more precise location definition (especially when using City name as a starting point), head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape. Note that 📍 Location settings always take priority over 📡 Geolocation* (so use either section but not both at the same time). For guidance and tricks on location definition, check our tutorial.
Restrict what places are scraped based on matching their name with provided 🔍 Search term. E.g., all places that have chicken in their name vs. places called Kentucky Fried Chicken.
Skip places that are marked as temporary or permanently closed. Ideal for focusing on currently open places.
Use this field to define the exact search area if other search area parameters don't work for you. See readme or our guide for details.
Extract the "Web results" section located at the bottom of every place listing.
Scrape only places with a rating equal to or above the selected stars. Places without reviews will also be skipped. Keep in mind, filtering by reviews reduces the number of places found per credit spent, as many will be excluded.
Some places (e.g. malls) can have multiple businesses located inside them. This option will scrape inside the "Directory" or "At this place" as per different categories (example here). Turn this toggle on to include those places in your results. ⚠️ Note that that full place details needs to be scraped in order to scrape directories.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Type what you'd normally search for in the Google Maps search bar, like English breakfast or pet shelter. Aim for unique terms for faster processing. Using similar terms (e.g., bar vs. restaurant vs. cafe) may slightly increase your capture rate but is less efficient. ⚠️ Searching for a specific place? If you're looking for a particular business or location (e.g., M&M Indian Thai Halal Restaurant), make sure to also specify the city or country in the 📍 Location field below to get more accurate and reliable results. Without location context, Google Maps may return results from unexpected areas. ⚠️ Heads up: Adding a location directly to the search, e.g., restaurant Pittsburgh, can limit you to a maximum of 120 results per search term due to Google Maps' scrolling limit. You can also use direct place IDs here in the format place_id:ChIJ8_JBApXMDUcRDzXcYUPTGUY. See the detailed description.
You can limit the places that are scraped based on the Category filter; you can choose as many categories for one flat fee for the whole field. ⚠️ Using categories can sometimes lead to false negatives, as many places do not properly categorize themselves, and there are over 4,000 available categories which Google Maps has. Using categories might filter out places that you’d like to scrape. To avoid this problem, you must list all categories that you want to scrape, including synonyms, e.g., divorce lawyer, divorce attorney, divorce service, etc. See the detailed description.
Scrape detail pages of each place the Actor finds. This will slow down the Actor since it needs to open another page for each place individually. The fields available only when scrapePlaceDetailPage is enabled include: `reviewsDistribution`, `imageCategories`, popularTimes fields, `openingHours`, `BusinessConfirmationText`, `peopleAlsoSearch`, `reviewsTags`, `updatesFromCustomers`, `questionsAndAnswers`, `tableReservationLinks`, `orderBy`, `ownerUpdates` and hotel fields. Enabling this also ensures that `reviewsCount` will be scraped. This option needs to be enabled if you wish to use any of the options below.
Number of results you expect to get per each Search term, Category or URL. The higher the number, the longer it will take. If you want to scrape all the places available, leave this field empty or use this section 🧭 Scrape all places on the map*.
Enable enrichment for any social media profiles found. This add-on retrieves detailed public data for each profile, including profile names, follower/following counts, descriptions, post/video counts, and verification status. Pricing depends on your subscription plan (please see the 'Pricing' tab for details). You are charged a flat rate for the total number of profiles enriched, regardless of how many platforms (Facebook, YouTube, etc.) you select.Feature Dependency: To use this feature, the '⏩ Add-on: Company contacts enrichment (from website)' option will be automatically enabled. This ensures that all enriched social media data is correctly combined with the main contact record for each domain. Output: Enriched profiles are available in the Social profiles output view tab.
You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per place (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.
When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an emailVerification object with the verification result and quality assessment. Requires business leads enrichment to be enabled.
Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees. This setting allows you to set the maximum number of leads records you want to scrape per each place found on the map (that has a website). By default, it's set to 0 which means that no leads information will be scraped. ⚠️ Note that some of the fields contain personal data. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney. We exclude leads of big chains as these are not related to the local places: mcdonalds, starbucks, dominos, pizzahut, burgerking, kfc, subway, wendys, dunkindonuts, tacobell. ⚠️ Cost warning: This is a multiplier. Requesting 10 leads for 1,000 places will attempt to find 10,000 total leads. You are only charged for leads successfully found.
Scrape table reservation provider data like name, address, email or phone. This data is present only in restaurants that have blue "RESERVE A TABLE" button
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Extract emails and phone numbers for businesses on Google Maps"
}
}'askfaro describe site-scrapers/google-maps-contacts
Install pip install askfaro-cli, then askfaro auth login.
Enter a valid Facebook page URL, e.g. https://www.facebook.com/humansofnewyork/. Note that you can only scrape public pages with this Actor, not personal profiles.
Extract video transcript (if available).
If this limit is not set, only the initial page of results will be extracted.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Scrape posts from the provided date to the present day (or date set in 'Older than'). The date should be in YYYY-MM-DD absolute format or in relative format, e.g., 1 day, 2 months, 3 years. The JSON input also supports adding time units (UTC timezone): Full or partial ISO timestamp (e.g., `2025-09-23T10:02:01`) as absolute time and relative time, e.g., `1 hour` or `2 minutes`.
Scrape posts from the provided date to the past (or date set in 'Newer than'). The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 days, 2 months, 3 years. The JSON input also supports adding time units (UTC timezone): Full or partial ISO timestamp (e.g., `2025-09-23T10:02:01`) as absolute time and relative time, e.g., `1 hour` or `2 minutes`.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape posts from a Facebook page"
}
}'askfaro describe site-scrapers/facebook-posts-scraper
Install pip install askfaro-cli, then askfaro auth login.
Enter a search term (e.g., 'Saloon') or a category name (e.g., 'Automotive'). If 'Search category' is enabled below, ensure you provide a valid Yelp category.
Choose between 'Basic' for core business information (faster) or 'Advanced' for full business metadata including detailed contact and operation info.
Choose whether to collect the full structured menu or just the 'Popular Dishes' curated by Yelp users.
Enter a city, state to define your search area.
Ignore the 'Max Results' limit and collect every organic listing available for this query.
When enabled, also collects promoted/sponsored listings alongside organic search results.
Provide business URLs or IDs to scrape their user reviews. Input example: https://www.yelp.com/biz/supermoon-bakehouse-new-york
Enter a list of Yelp business URLs or 22-character IDs to scrape full profile data. Input example: https://www.yelp.com/biz/supermoon-bakehouse-new-york
Filter the reviews to only include specific star ratings.
When enabled, the Actor will use Yelp's category search endpoint instead of a general keyword search.
Choose how reviews should be ordered in the output.
Provide business URLs or IDs to extract menus or top dishes. Input example: https://www.yelp.com/biz/supermoon-bakehouse-new-york
Number of business listings to collect (minimum 40). The Actor will automatically handle pagination.
Specify the maximum number of reviews to collect per business profile (minimum 40).
Ignore the limit and collect every review available for the business.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find restaurants on Yelp in San Francisco"
}
}'askfaro describe site-scrapers/yelp-scraper
Install pip install askfaro-cli, then askfaro auth login.
Add one or multiple TikTok usernames or user IDs you want to scrape. You can enter the usernames one by one, or use the Bulk edit section to add a prepared list.
Scrapes only videos with less hearts than the number you add. Doesn't work with date filters
Scrapes only videos with no less hearts than the number you add. Doesn't work with date filters
Optional filter. Only videos uploaded before or on this date will be scraped.
Select Latest to scrape the most recent videos first, Oldest - the oldest videos first, Popular - the most popular videos first. Date filters only work with Latest and Oldest. Only supported for Videos section
The number of posts that will be scraped from every profile.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Tick to exclude pinned posts from profiles. Pinned posts are usually the first videos on a profile's page.
Tick to download TikTok video cover images (thumbnails). Note that this will increase time and costs needed to extract the data.
Tick to download TikTok videos. Note that this will increase time and costs needed to extract the data.
Name (or ID) of the Key Value Store where the videos and other media like thumbnails will be stored. Omit to store in the default one. Using this option will provide a named Key-Value store can help bypass data retention and store the content forever until the store is manually deleted. The Key-Value store's name can consist of a versatile combination of uppercase letters, lowercase letters, digits, or hyphens, all without any spaces.
Optional filter. Only videos uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 will get you only today's posts, 2 - yesterday's and today's, and so on.
If a profile has reposted videos, you can scrape them by selecting 'Reposts'
Tick to download authors' profile pictures. Note that this will increase time and costs needed to extract the data.
Optional charged filter. Scrapes only profiles with less followers than the number you add.
Optional charged filter. Scrapes only profiles with less following profiles than the number you add.
Choose how to handle subtitles and audio transcription for input videos. Subtitles are provided by TikTok for some videos, and transcription means that this Actor will use speech-to-text AI to generate video transcript. Transcripts are charged as an extra event according to your plan.
Tick to download TikTok slideshow images. Note that this will increase costs and time required for scraping.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get a TikTok profile's follower count and recent videos"
}
}'askfaro describe site-scrapers/tiktok-profile-scraper
Install pip install askfaro-cli, then askfaro auth login.
Select one or more predefined Google News topics to scrape.
List of keywords to search for. You can use Google News search operators: - Use '-' to exclude words (e.g. 'bitcoin -ethereum') - Use 'site:' to filter by specific website (e.g. 'bitcoin site:cnn.com') - Use 'OR' to search for multiple terms (e.g. 'bitcoin OR ethereum') - Use quotes for exact match (e.g. '"bitcoin price"')
Time period for the news search. Note: this filter applies mainly to keyword searches. Topic pages return their own curated results.
Provide custom Google News topic or section URLs to scrape. Useful for niche topics not in the predefined list. Example: https://news.google.com/topics/CAAqJggKIiBDQkFTRWdvSUwyMHZNRGx1YlY4U0FtVnVHZ0pWVXlnQVAB
If enabled, decodes Google News URLs to get the original article URLs. Note: This will significantly slow down the scraping process as each URL needs to be decoded individually.
Maximum number of news to extract per keyword or topic (0 = no limit)
Fetches the og:image from each article page when no image is available (mainly for RSS/topic results). When this option is not explicitly set, images are extracted by default. Toggle OFF to skip image extraction and speed up scraping.
Region and language for news search
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Configure Apify Proxy. Residential proxies recommended for best results.
If enabled, extracts the meta description from each article page. Note: This will significantly slow down the scraping process.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get Google News articles about a company"
}
}'askfaro describe site-scrapers/google-news-scraper
Install pip install askfaro-cli, then askfaro auth login.
Valid facebook URL
Choose the way the comments are sorted
If this limit is not set as many results as possible are returned
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
If checked, the actor will return up to 3 levels of comments/replies for each post. Note that each reply/comment will be returned as a separate result.
Limit how far back to the history the scraper should go. The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 year, 2 months, 3 days, 4 hours, or 5 minutes. All time values are taken in UTC timezone. This add-on feature is billed separately.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape comments from a Facebook post"
}
}'askfaro describe site-scrapers/facebook-comments-scraper
Install pip install askfaro-cli, then askfaro auth login.
List of facebook ads search URLs or Page URLs to scrape ads from
Leave this field empty if you want to limit number of ads scraped
You can use this option to customise the proxy country
Add this value to 'runTag' column in the output
Limit number of ads scraped per input URL. Leave it blank to scrape all available ads ℹ️ Actual number might exceed the given limit by upto 30
Enable this option to scrape ads details such as EU Reach info
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Search ads in given date range
Sort by impressions or date. Default: Impressions
2-letter ISO country code (ISO 3166-1 alpha-2). This should be the official uppercase country code, such as `IN` for India, `US` for United States, etc. Use `ALL` for targeting all countries
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find active Facebook ads a brand is running"
}
}'askfaro describe site-scrapers/facebook-ads-library
Install pip install askfaro-cli, then askfaro auth login.
Maximum number of posts to scrape per each profile or company. Default is 10. This overrides pagination. If you set this to 0, it will scrape all posts.
List of LinkedIn profile or company URLs to scrape. Example: `https://www.linkedin.com/in/satyanadella/` will fetch posted or re-posted content by Bill Gates.
Maximum number of comments to scrape per post. Default is 5.
Fetch posts no older than X time. Options: '24h', 'week', 'month'.
Maximum number of reactions to scrape per post. Default is 5.
Include reposts (shared posts without comments). By default, all posts are scraped.
Scrape comments of posts.
Scrape posts from now up to and including this date. It supports the Date time string format. For example, "2011-10-10", or "2011-10-10T14:48:00.000+09:00" or a timestamp: "628021800000"
Scrape reactions of posts.
Include quote posts (shared posts with comments). By default, all posts are scraped.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Whether to add comments items inside post items. In a case of hundreds of comments, the Actor might hit the max item size limit and won't be able to save a post.
Fetch comments no older than X time. Options: '24h', 'week', 'month'.
Whether to add reactions items inside post items. In a case of hundreds of reactions, the Actor might hit the max item size limit and won't be able to save a post.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get recent posts from a LinkedIn profile"
}
}'askfaro describe site-scrapers/linkedin-profile-posts
Install pip install askfaro-cli, then askfaro auth login.
Sort by 'relevance' or 'date'.
Maximum number of posts to scrape per each search query. If you set this to 0, it will scrape all posts.
The page number to start scraping from.
List of LinkedIn profile or company URLs to scrape. Example: `https://www.linkedin.com/in/williamhgates` will fetch posted or re-posted content by Bill Gates.
Filter posts by content type. For example, if you choose 'Videos', it will scrape only posts containing videos.
Maximum number of comments to scrape per post.
Fetch posts no older than X time. Options: '1h', '24h', 'week', 'month'.
The number of search pages to scrape. Each page contains 100 posts
Maximum number of reactions to scrape per post. Default is 5.
Queries to search LinkedIn posts. The same query as you would use in the LinkedIn search bar.
Scrape posts of profile-authors whose profiles contain at least one of these keywords in the headline or job title sections.
Scrape comments of posts.
Scrape posts from now up to and including this date. It supports the Date time string format. For example, "2011-10-10", or "2011-10-10T14:48:00.000+09:00" or a timestamp: "628021800000"
Scrape reactions of posts.
Scrape posts of profile-authors who assigned to LinkedIn Company Names of these companies. Example: `Google` will fetch posts of Google employees or ex-employees in some cases.
List of LinkedIn profile URLs of members mentioned in posts. Example: `https://www.linkedin.com/in/williamhgates` will fetch posts mentioning Bill Gates.
Scrape posts of profile-authors who assigned to LinkedIn Industry IDs of these industries. Full list: https://github.com/HarvestAPI/linkedin-industry-codes-v2/blob/main/linkedin_industry_code_v2_all_eng.csv
List of LinkedIn Company Names mentioned in posts. Example: `https://www.linkedin.com/company/google` will fetch posts mentioning Google.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Whether to add comments items inside post items. In a case of hundreds of comments, the Actor might hit the max item size limit and won't be able to save a post.
Choose the mode for scraping LinkedIn profiles. The Short mode provides basic information, while the Full mode includes full detailed profile data.
Fetch comments no older than X time. Options: '1h', '24h', 'week', 'month'.
Whether to add reactions items inside post items. In a case of hundreds of reactions, the Actor might hit the max item size limit and won't be able to save a post.
Choose the mode for scraping LinkedIn profiles. The Short mode provides basic information, while the Full mode includes full detailed profile data.
Choose the mode for scraping LinkedIn profiles. The Short mode provides basic information, while the Full mode includes full detailed profile data.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Search LinkedIn posts for a keyword"
}
}'askfaro describe site-scrapers/linkedin-post-search
Install pip install askfaro-cli, then askfaro auth login.
Sort search by Relevance, Hot, Top, New or Comments
Filter posts by last hour, week, day, month or year
Either use Apify proxy, or provide your own proxy servers.
The maximum number of items that will be saved in the dataset. If you are scrapping for Communities&Users, remember to consider that each category inside a community is saved as a separated item.
Here you can provide a search query which will be used to search Reddit`s topics.
Activate to see detailed logs
If you already have URL(s) of page(s) you wish to scrape, you can set them here. If you want to use the search field below, remove all startUrls here.
You can choose to include or exclude NSFW content from your search
The maximum number of comments that will be scraped for each Comments Page. If you don't want to scrape comments you can set this to zero.
Will search for posts with the provided search
Will search for users with the provided search
The maximum number of posts that will be scraped for each Posts Page or Communities&Users URL
The maximum number of `Users`'s pages that will be scraped.
This will skip scrapping comments when going through posts
Use this value to only retrieve posts published after a specific date.
Set the timeout in seconds in which the page will stop scrolling down to load new items
This will skip scrapping community info but will still get community posts if they were not skipped.
This will skip scrapping user posts when going through user activity
Will search for comments with the provided search
Mainly used as a fix for ignoring starUrl on Zapier
Use this value to only retrieve comments published after a specific date inside a post.
Will search for communities with the provided search
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
The maximum number of `Communities`'s pages that will be scraped if your search or startUrl is a Communities type.
If provided, the search will be performed only inside this community (e.g., 'programming').
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape posts from a subreddit"
}
}'askfaro describe site-scrapers/reddit-scraper
Install pip install askfaro-cli, then askfaro auth login.
Enter a link to a channel. You can also import a CSV file or Google Sheet with a list of URLs.
Limit the number of regular videos (not streams, not shorts) you want to get from one channel. If you use several urls on the input you will get this number for each channel.
Maps to the sorting buttons on the top of the channel's 'Videos', 'Shorts' and 'Live' pages.
Only posts uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 day will get you only today's posts, 2 days - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to NEWEST
Limit the number of Stream videos you want to get from the channel.
Limit the number of Shorts videos you want to get from the channel.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get all videos from a YouTube channel"
}
}'askfaro describe site-scrapers/youtube-channel-scraper
Install pip install askfaro-cli, then askfaro auth login.
List of company names to search on LinkedIn
List of LinkedIn company URLs
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get company details from a LinkedIn company page"
}
}'askfaro describe site-scrapers/linkedin-company-scraper
Install pip install askfaro-cli, then askfaro auth login.
Go to linkedin jobs search page on incognito window (to access public version), search with required filters and once you are done, copy the full URL from address bar and pass it here. You can pass multiple search URLs
Limit number of jobs scraped
Select the country whose cities will be used to split the search. Only used when 'Split search by city locations' is enabled. Required to when 'Split search by city locations' is enabled.
This will require additional scraping requests for each job record and take longer to scrape
Enable this to split your search by cities within a country. This helps bypass LinkedIn's 1000 job limit per search URL by creating separate searches for each city. This will overwrite the location filter in input search URLs.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find jobs on LinkedIn for 'product manager' in London"
}
}'askfaro describe site-scrapers/linkedin-jobs-scraper
Install pip install askfaro-cli, then askfaro auth login.
The zip code to use as the delivery location. This is useful for more precise location settings, especially in larger countries.
Language to use on Amazon. **Disclaimer**: each Amazon domain has a different set of supported languages. If you choose a language that is not supported by the domain, the scraper will use the default language of the domain.
Enter the maximum number of offers you want to scrape per each product. This will let the scraper know when to stop. Note that this **will increase the number of requests** and **extend the scraping time**.
The country code to use as the delivery location.
You can set proxy country to **avoid geo-blocking** and **access region-specific content**. Amazon shows you the products that can be shipped to your address based on the proxy you use. *By default*, the scraper **automatically selects** the **proxy country** based on the used Amazon website domain, ensuring low blocking rates and results relevant to the base domain.
Enable this option to extract further information about sellers of the product. Scrapes the featured offer seller (main seller). This option goes hand in hand with the `maxOffers` option bby scraping the seller of each offer. If you set `maxOffers` to 0, only the featured offer seller will be scraped. Note that this **will increase the number of requests** and **extend the scraping time**.
If enabled the scraper will automatically solve captchas thrown by Amazon. This will decrease the amount of request retries and increase the speed of the scraper. ***IMPORTANT*** - This option works well only for the `'.com'` Amazon domain, but even for that one Amazon doesn't show a few product fields after solving a captcha (specifically: 'attributes', 'manufacturer attributes', and 'bestseller ranks')
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Enter the maximum number of results you want to scrape per each star URL. This will let the scraper know when to stop.
If enabled, the scraper will extract each found product from the category page in detail (this is the default behavior). If disabled, the scraper will only extract the quick product information from the category page. Useful for faster and more lightweight searches for products.
Use a link to the Amazon category you want to scrape, e.g. video games - https://www.amazon.com/s?bbn=16225016011&rh=n%3A20972781011, https://www.amazon.com/dp/B0B3BVWJ6Y. You can also filter within the category with almost any filter available, i.e. price, manufacturer, rating, etc. By using a different URL you can also choose a different Amazon country, e.g. Germany: https://www.amazon.de/. You don't need to set a proxy country to do that.
The list of routes/page types, for which the deliverable location settings should be applied. - This is useful for speeding up the scraping process by not applying the location settings to all pages, for which you don't need the localized data for. - For example, you can set it to `['SEARCH', 'PRODUCT']` to apply the location settings only to search and product pages. - By default, all pages are included.
Enter the maximum number of search pages to scrape for each start URL. E.g. only scrape the first 5 pages. This field can also be used with the `maxItemsPerStartUrl` option, the scraper will stop after either one of these limits is reached.
Enable this option to extract prices of different variations of a product. Useful when you need prices for each variant. Note that this **will increase the number of requests** and **extend the scraping time**.
Enter the maximum number of product variants you want to scrape per each product, outputted as separate results. **Please beware** that **you can already get** most of the **variant details** changes, in the **`variantDetails` field**, which is outputted by default. Note that this **will increase the number of requests** and **extend the scraping time**.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get the price and details for an Amazon product"
}
}'askfaro describe site-scrapers/amazon-product-scraper
Install pip install askfaro-cli, then askfaro auth login.
Enter a link to a specific Youtube video YouTube video. You can also import a CSV file or Google Sheet with a list of URLs.
Limit the number of comments you want to scrape per video.
Select Youtube sorting parameter for comments
Only comments published after or on this date will be scraped. Alternatively, specify how old the scraped comments should be. Putting 1 day will get you only today's comments, 2 days - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to newest first
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape comments from a YouTube video"
}
}'askfaro describe site-scrapers/youtube-comments-scraper
Install pip install askfaro-cli, then askfaro auth login.
Enter a username of a channel (without @ sign) or a link to it (e.g. https://www.youtube.com/c/Apify).
Only posts uploaded after or on this date will be scraped. Alternatively, specify how old the scraped videos should be in days. Putting 1 day will get you only today's posts, 2 days - yesterday's and today's, and so on. Note, that if you select this, sorting parameter will be auto-reset to NEWEST
Limit the number of Shorts videos you want to crawl from the channel.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Maps to the three sorting buttons on the top of the channel shorts page.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape YouTube Shorts from a channel"
}
}'askfaro describe site-scrapers/youtube-shorts-scraper
Install pip install askfaro-cli, then askfaro auth login.
End date for filtering videos by upload date (format: YYYY-MM-DD or ISO 8601, optional). Only applicable and used with channel_url; ignored for youtube_url. Videos uploaded on or before this date will be fetched.
Language of the subtitles in ISO 639-1 format, e.g., `en`, `fr`. Applicable to both youtube_url and channel_url. Leave blank for default language.
Maximum number of videos to fetch from the channel (optional, default: 10, range: 1 to 200). Only applicable and used with channel_url; ignored for youtube_url. Combine with start_date/end_date for filtered results.
Start date for filtering videos by upload date (format: YYYY-MM-DD or ISO 8601, optional). Only applicable and used with channel_url; ignored for youtube_url. Videos uploaded on or after this date will be fetched.
Enter a valid YouTube channel URL (e.g., https://www.youtube.com/channel/UCxxxxxxxxxxxxxxxxxxxxxx or https://www.youtube.com/@channelhandle). Use this to fetch videos from the channel, paired with 'max_videos', 'start_date', and 'end_date' for limiting and filtering results.
Enter a valid YouTube video URL (e.g., https://www.youtube.com/watch?v=video_id, https://youtu.be/video_id, or https://www.youtube.com/shorts/video_id). Use this for fetching a single video, paired with 'language' for transcript. Do not combine with channel filtering fields.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Include the full transcript as a plain string without timestamps (transcript_text field). Default is off to reduce response size. Enable this if you need the transcript as a single text block.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get the transcript of a YouTube video"
}
}'askfaro describe site-scrapers/youtube-transcript
Install pip install askfaro-cli, then askfaro auth login.
Enter the city where the data extraction should be carried out, e.g., Pittsburgh. ⚠️ Do not include State or Country names here. ⚠️ Automatic City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need that, set up the location using Country, State, County, City, or Postal code. For an even more precise location definition (, head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape.
Set a state where the data extraction should be carried out, e.g., Massachusetts (mainly for the US addresses).
Set the county where the data extraction should be carried out. ⚠️ Note that county may represent different administrative areas in different countries: a county (e.g., US), regional district (e.g., Canada) or département (e.g., France).
Use this to exclude places without a website, or vice versa. This option is turned off by default.
Results details will show in this language.
List of place IDs. You can add place IDs one by one or upload a list using the Bulk edit option. Place ID has format `ChIJreV9aqYWdkgROM_boL6YbwA`
Set the number of images per place you expect to scrape. Please be aware that the `Add-on: additional place details scraped` charge applies to each place you scrape for images, as the Actor must access the detail page first. All prices are determined by your subscription plan. To extract all images, set this to 99999. If left empty, no images will be scraped. The higher the number, the slower the search.
Max 300 results per search URL. Valid format for URLs contains google.com/maps/. This feature also supports uncommon URL formats such as: google.com/maps?cid=***, goo.gl/maps, and custom place list URL.
Set the number of reviews you expect to get per place. Please be aware that the `Add-on: additional place details scraped` charge applies to each place you scrape for reviews, as the Actor must access the detail page first. All prices are determined by your subscription plan. To extract all reviews, set this to 99999. If left empty, no reviews will be scraped. Each output place item can contain maximum 5,000 reviews so in case more reviews are extracted, a duplicate place is stored with the next 5,000 reviews and so on. ⚠️ Enabling this feature might slow the search down.
Set the postal code of the area where the data extraction should be carried out, e.g., 10001. ⚠️ Combine Postal code only with 🗺 Country, never with 🌇 City. You can only input one postal code at a time.
Set the country where the data extraction should be carried out, e.g., United States.
Define the order in which reviews should be sorted.
Set the number of questions per place you expect to scrape. If you fill in 0 or leave the field empty, only the first question and answer will be scraped. To extract all questions, type 999 into the field. ⚠️ Note that some of the fields contain personal data.
Define location using free text. Simpler formats work best; e.g., use City + Country rather than City + Country + State. Verify with the OpenStreetMap webapp for visual validation of the exact area you want to cover. 💡 Pro tip: Always specify a location when searching for specific place names in the 🔍 Search terms field above. This helps narrow down results to the geographic area you're interested in and prevents getting results from unrelated locations. ⚠️ Automatically defined City polygons may be smaller than expected (e.g., they don't include agglomeration areas). If you need to define the whole city area, head over to the 📡 Geolocation parameters* section instead to select Country, State, County, City, or Postal code. For an even more precise location definition (especially when using City name as a starting point), head over to 🛰 Custom search area section to create polygon shapes of the areas you want to scrape. Note that 📍 Location settings always take priority over 📡 Geolocation* (so use either section but not both at the same time). For guidance and tricks on location definition, check our tutorial.
Select whether you want all reviews (from Google, Tripadvisor, etc.) or only reviews from Google
Enrich Google Maps places with contact details extracted from the business website, including business emails and social media profiles (Meta, LinkedIn, X, etc). Significant discounts are available on higher-tier plans. Please see the Pricing tab for your exact rate based on your subscription. We exclude contacts of big chains: mcdonalds, starbucks, dominos, pizzahut, burgerking, kfc, subway, wendys, dunkindonuts, tacobell.
Restrict what places are scraped based on matching their name with provided 🔍 Search term. E.g., all places that have chicken in their name vs. places called Kentucky Fried Chicken.
Either absolute date (e.g. `2024-05-03`) or relative date from now into the past (e.g. `8 days`, `3 months`). JSON input also supports adding time in both absolute (ISO standard, e.g. `2024-05-03T20:00:00`) and relative (e.g. `3 hours`) formats. Absolute time is always interpreted in the UTC timezone, not your local timezone - please convert accordingly. Supported relative date & time units: `minutes`, `hours`, `days`, `weeks`, `months`, `years`. ⚠️ Heads up: If this parameter is specified, you must choose the 'Newest' sort by value. The reason for this is that with this parameter entered, the actor stops scraping reviews as soon as it finds the first review that's older than the specified date. If the sorting is not set to 'Newest', it might encounter a review older than the specified date before it reaches the desired review count and not scrape the desired amount of reviews.
Skip places that are marked as temporary or permanently closed. Ideal for focusing on currently open places.
Use this field to define the exact search area if other search area parameters don't work for you. See readme or our guide for details.
Extract the "Web results" section located at the bottom of every place listing.
Scrape only places with a rating equal to or above the selected stars. Places without reviews will also be skipped. Keep in mind, filtering by reviews reduces the number of places found per credit spent, as many will be excluded.
Some places (e.g. malls) can have multiple businesses located inside them. This option will scrape inside the "Directory" or "At this place" as per different categories (example here). Turn this toggle on to include those places in your results. ⚠️ Note that that full place details needs to be scraped in order to scrape directories.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Include the author name for each image. ⚠️ Enabling this toggle may slow down processing as it requires fetching information for each image individually.
Type what you'd normally search for in the Google Maps search bar, like English breakfast or pet shelter. Aim for unique terms for faster processing. Using similar terms (e.g., bar vs. restaurant vs. cafe) may slightly increase your capture rate but is less efficient. ⚠️ Searching for a specific place? If you're looking for a particular business or location (e.g., M&M Indian Thai Halal Restaurant), make sure to also specify the city or country in the 📍 Location field below to get more accurate and reliable results. Without location context, Google Maps may return results from unexpected areas. ⚠️ Heads up: Adding a location directly to the search, e.g., restaurant Pittsburgh, can limit you to a maximum of 120 results per search term due to Google Maps' scrolling limit. You can also use direct place IDs here in the format place_id:ChIJ8_JBApXMDUcRDzXcYUPTGUY. See the detailed description.
You can limit the places that are scraped based on the Category filter; you can choose as many categories for one flat fee for the whole field. ⚠️ Using categories can sometimes lead to false negatives, as many places do not properly categorize themselves, and there are over 4,000 available categories which Google Maps has. Using categories might filter out places that you’d like to scrape. To avoid this problem, you must list all categories that you want to scrape, including synonyms, e.g., divorce lawyer, divorce attorney, divorce service, etc. See the detailed description.
If you enter keywords, only reviews containing those keywords will be scraped. Leave it blank to scrape all reviews.
Scrape detail pages of each place the Actor finds. This will slow down the Actor since it needs to open another page for each place individually. The fields available only when scrapePlaceDetailPage is enabled include: `reviewsDistribution`, `imageCategories`, popularTimes fields, `openingHours`, `BusinessConfirmationText`, `peopleAlsoSearch`, `reviewsTags`, `updatesFromCustomers`, `questionsAndAnswers`, `tableReservationLinks`, `orderBy`, `ownerUpdates` and hotel fields. Enabling this also ensures that `reviewsCount` will be scraped. This option needs to be enabled if you wish to use any of the options below.
Extract all places visible on the map. Use the Override zoom level parameter to select the level of detail. Higher zoom will scrape more places but will take longer to finish. You can test what place pins are visible with a specific zoom by changing the 16z part of the Google Maps URL.
Number of results you expect to get per each Search term, Category or URL. The higher the number, the longer it will take. If you want to scrape all the places available, leave this field empty or use this section 🧭 Scrape all places on the map*.
This setting allows you to get personal data about the reviewer (their ID, name, URL, and photo URL) and about review (URL). Note: review ID (reviewId) is always included regardless of this setting. ⚠️ Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
Enable enrichment for any social media profiles found. This add-on retrieves detailed public data for each profile, including profile names, follower/following counts, descriptions, post/video counts, and verification status. Pricing depends on your subscription plan (please see the 'Pricing' tab for details). You are charged a flat rate for the total number of profiles enriched, regardless of how many platforms (Facebook, YouTube, etc.) you select.Feature Dependency: To use this feature, the '⏩ Add-on: Company contacts enrichment (from website)' option will be automatically enabled. This ensures that all enriched social media data is correctly combined with the main contact record for each domain. Output: Enriched profiles are available in the Social profiles output view tab.
You can use this filter to include only specific departments (like Sales, Marketing, or C-Suite). Note: This will only work if the ⏩ Add-on: Extract business leads information - Maximum leads per place (maximumLeadsEnrichmentRecords) option is enabled. Please note that some job titles are sometimes miscategorized in the wrong departments.
When enabled, verifies the email address of each lead extracted during business leads enrichment. Each lead receives an emailVerification object with the verification result and quality assessment. Requires business leads enrichment to be enabled.
Enrich your results with detailed contact and company information, including employee names, job titles, emails, phone numbers, LinkedIn profiles, and key company data like industry and number of employees. This setting allows you to set the maximum number of leads records you want to scrape per each place found on the map (that has a website). By default, it's set to 0 which means that no leads information will be scraped. ⚠️ Note that some of the fields contain personal data. GDPR protects personal data in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your use case is legitimate, please consult an attorney. We exclude leads of big chains as these are not related to the local places: mcdonalds, starbucks, dominos, pizzahut, burgerking, kfc, subway, wendys, dunkindonuts, tacobell. ⚠️ Cost warning: This is a multiplier. Requesting 10 leads for 1,000 places will attempt to find 10,000 total leads. You are only charged for leads successfully found.
Scrape table reservation provider data like name, address, email or phone. This data is present only in restaurants that have blue "RESERVE A TABLE" button
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find coffee shops near a location on Google Maps"
}
}'askfaro describe site-scrapers/google-maps-scraper
Install pip install askfaro-cli, then askfaro auth login.
Provide one or several Instagram user names you want to scrape the posts from. The actor will also handle user name IDs.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
This feature is for paying users only. If enabled, the scraper will extract information about the account, including date joined, country of origin, and the profile's channel information. Please beware that the country is there ONLY if the user filled in this information.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get an Instagram profile's bio, followers, and post count"
}
}'askfaro describe site-scrapers/instagram-profile-scraper
Install pip install askfaro-cli, then askfaro auth login.
Provide urls of Facebook pages you want to get information from. Only works on facebook pages, not personal profiles (not even public ones).
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get details and info for a Facebook page"
}
}'askfaro describe site-scrapers/facebook-pages-scraper
Install pip install askfaro-cli, then askfaro auth login.
Specifies proxy servers that will be used by the scraper in order to hide its origin. For details, see Proxy configuration in README.
Minimum number of bedrooms. Leave empty for any.
Free-text keyword that must appear in the listing description (e.g. 'roof', 'pool', 'new roof'). Leave empty to skip keyword filtering.
Minimum number of bathrooms. Leave empty for any.
Maximum number of listings/items/agents to scrape per crawl. Lower this for quick test runs; raise it (or leave the default) for full scrapes.
Maximum list price (or sold price when mode is 'Sold'). Leave empty for no maximum.
Minimum list price (or sold price when mode is 'Sold'). Leave empty for no minimum.
URLs to start with. Use a real Realtor.com search URL to mirror exactly what you see in the browser. Clear this list and use the 'Scrape with search filters' section below if you prefer a guided form.
Top-level search mode. Choose 'For sale / Off market' to use the Statuses filter below, or 'Sold' for recently sold listings (last 6 months window).
List of ZIP codes to search for agents (e.g. 32963, 90210). Each becomes a /realestateagents/{zip} URL. Leave empty when scraping listings.
Filter by one or more property types. Leave empty for all types.
Maximum number of pages that can be processed at the same time. Lower values (3-5) help prevent memory issues.
Minimum number of pages that will be processed at the same time.
If checked, the scraper will only return listings that were not seen in previous runs (useful for daily/weekly delta runs).
Which listing statuses to include. Defaults to active 'For Sale' + 'Ready to Build'. Add 'Pending' or 'Coming Soon' to get the listings the client cares about. Ignored in 'Sold' mode.
If enabled, the scraper will fetch additional property stats (price history, neighborhood stats) for each listing. Adds extra requests, so it slows the run down.
City, ZIP code, neighborhood or state to search. Examples: 'Las Vegas, NV', 'Corinth_TX', '90026', 'Brooklyn, NY'. Add as many as you need.
Number of times the crawler will retry a failed request before giving up.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
If enabled, the scraper will fetch active listings for each agent. Only relevant when scraping agents.
If enabled, the scraper will fetch the public-records 'Permit history' table for each property (date, type of work, project type, project name, status). A derived has_roof_permit flag is also added so you can spot roofing permits at a glance. Adds one extra request per property and is billed via the separate permit-history event, charged per permit row returned (e.g. a property with 3 permits = 3 charges; a property with no permits = 0 charges).
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find homes for sale on Realtor.com in Denver"
}
}'askfaro describe site-scrapers/realtor-scraper
Install pip install askfaro-cli, then askfaro auth login.
Add one or multiple URLs to scrape comments from - posts or reels. You can add URLs one by one or upload a list using the Bulk edit option.
Set the number of comments you expect to scrape from each post or reel. If set to 5, you will get 5 comments per URL. If you add 2 URLs, you will extract 10 results altogether. ❗️ If you choose to scrape replies as well, the total number will be greater than you set for comments.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
This feature is for paying users only. If checked, the scraper will extract replies for each comment. ⚠️ Note that each reply/comment will be displayed as a separate result, so you'll get more results in total than you set in `resultsLimit` section above.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape comments from an Instagram post"
}
}'askfaro describe site-scrapers/instagram-comment-scraper
Install pip install askfaro-cli, then askfaro auth login.
Provide one or several Threads.Net user names you want to scrape.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get a Threads profile's posts and follower count"
}
}'askfaro describe site-scrapers/threads-profile-scraper
Install pip install askfaro-cli, then askfaro auth login.
Returns tweets sent before the given date.
Sorts search results. If you are getting low results, try Top instead of Latest. Latest + Top runs both simultaneously to maximize results but may return some duplicate tweets.
Returns tweets sent after the given date.
Returns tweets sent by the given user. It should be a Twitter (X) Handle.
Returns tweets sent by users located within a given radius of the given latitude/longitude.
Maximum number of items that you want as output.
Returns tweets that are replies to the given user. It should be a Twitter (X) Handle.
If selected, only returns tweets that contain images.
If selected, only returns tweets that are quotes.
If selected, only returns tweets that contain videos.
Twitter (X) URLs. Paste the URLs and get the results immediately. Tweet, Profile, Search or List URLs are supported.
Returns tweets mentioning the given user. It should be a Twitter (X) Handle.
Search terms you want to search from Twitter (X). You can refer to https://github.com/igorbrigadir/twitter-advanced-search.
Returns tweets sent within the given radius of the given location.
Returns tweets sent near the given location.
Returns tweets tagged with the given place.
Restricts tweets to the given language, given by an ISO 639-1 code.
Returns tweets with at least the given number of replies.
Twitter handles that you want to search on Twitter (X)
Conversation IDs that you want to search on Twitter (X)
Returns tweets with at least the given number of retweets.
If selected, only returns tweets by users who are Twitter Blue subscribers.
Returns tweets with at least the given number of favorites.
Function that takes each of the objects as argument and returns data that will be mapped by the function itself. This function is not intended for filtering, please don't use it for filtering purposes or you will get banned automatically.
If selected, only returns tweets by users who are verified.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
If selected, a field will be added to each tweets about the search term that was used to find it.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Scrape recent tweets for a hashtag or keyword"
}
}'askfaro describe site-scrapers/twitter-scraper
Install pip install askfaro-cli, then askfaro auth login.
LinkedIn Profile Scraper (with email).
List of LinkedIn profile URLs to scrape. Provide at least one of the 3 fields: URLs or Public Identifiers or Profile IDs
List of LinkedIn profile URLs or Public Identifiers (last part in the URL) to scrape.
List of LinkedIn profile IDs to scrape. Provide at least one of the 3 fields: URLs or Public Identifiers or Profile IDs
List of LinkedIn Public Identifiers. Provide at least one of the 3 fields: URLs or Public Identifiers or Profile IDs
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Choose the mode for scraping LinkedIn profiles. 'Profile details' scrapes detailed profile information, while 'Profile details + email search' attempts to find the email address of the profile owner.
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Get profile details for a person on LinkedIn"
}
}'askfaro describe site-scrapers/linkedin-profile-scraper
Install pip install askfaro-cli, then askfaro auth login.
Trending TikTok hashtags by country, time range, and Top-100 newness.
Ignored for trending creators
Pick the country for which you want to scrape trending hashtags
Maximum number of results we can scrape is approximately 100 for hashtags and sounds, and 500 for creators and videos.
For some regions TikTok might not provide any data, refer to https://ads.tiktok.com/business/creativecenter/inspiration/popular/creator/pc/en to see which regions are supported.
Filter trending hashtags by a specific industry. Applies if scraping hashtags from Ads Creative Center.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Pick the country for which you want to scrape trending songs
Pick the country for which you want to scrape trending videos
Pick the country for which you want to scrape trending creators
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "What are the trending TikTok hashtags in the US right now?"
}
}'askfaro describe site-scrapers/tiktok-trends-hashtags
Install pip install askfaro-cli, then askfaro auth login.
Trending TikTok sounds/songs by country and leaderboard type (popular vs breakout).
Ignored for trending creators
Pick the country for which you want to scrape trending hashtags
Maximum number of results we can scrape is approximately 100 for hashtags and sounds, and 500 for creators and videos.
For some regions TikTok might not provide any data, refer to https://ads.tiktok.com/business/creativecenter/inspiration/popular/creator/pc/en to see which regions are supported.
Filter trending hashtags by a specific industry. Applies if scraping hashtags from Ads Creative Center.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Pick the country for which you want to scrape trending songs
Pick the country for which you want to scrape trending videos
Pick the country for which you want to scrape trending creators
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "What songs are trending on TikTok this week?"
}
}'askfaro describe site-scrapers/tiktok-trends-sounds
Install pip install askfaro-cli, then askfaro auth login.
Trending TikTok videos by country and time range.
Ignored for trending creators
Pick the country for which you want to scrape trending hashtags
Maximum number of results we can scrape is approximately 100 for hashtags and sounds, and 500 for creators and videos.
For some regions TikTok might not provide any data, refer to https://ads.tiktok.com/business/creativecenter/inspiration/popular/creator/pc/en to see which regions are supported.
Filter trending hashtags by a specific industry. Applies if scraping hashtags from Ads Creative Center.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Pick the country for which you want to scrape trending songs
Pick the country for which you want to scrape trending videos
Pick the country for which you want to scrape trending creators
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Show me trending TikTok videos in the UK"
}
}'askfaro describe site-scrapers/tiktok-trends-videos
Install pip install askfaro-cli, then askfaro auth login.
Trending TikTok creators by country, follower bucket, and industry.
Ignored for trending creators
Pick the country for which you want to scrape trending hashtags
Maximum number of results we can scrape is approximately 100 for hashtags and sounds, and 500 for creators and videos.
For some regions TikTok might not provide any data, refer to https://ads.tiktok.com/business/creativecenter/inspiration/popular/creator/pc/en to see which regions are supported.
Filter trending hashtags by a specific industry. Applies if scraping hashtags from Ads Creative Center.
Token from a prior pending response. When set, all other params are ignored and the server resumes polling the existing run.
Pick the country for which you want to scrape trending songs
Pick the country for which you want to scrape trending videos
Pick the country for which you want to scrape trending creators
curl -X POST "https://skill.askfaro.com/skills/site-scrapers/run" \
-H "Authorization: Bearer faro_<your_key>" \
-H "Content-Type: application/json" \
-d '{
"intent": {
"prompt": "Find trending TikTok creators in the beauty space"
}
}'askfaro describe site-scrapers/tiktok-trends-creators
Install pip install askfaro-cli, then askfaro auth login.