API reference

Every parameter, response field and request for all 15 APIs, with examples in cURL, Node.js, Python, PHP and Go.

Host
https://api.apify.com/v2
Auth
Bearer $APIFY_TOKEN
Format
JSON Dataset items
On this pageQuickstart

Quickstart

Send a POST request to an Actor endpoint, then read the JSON Dataset items it returns. The same Apify token and API input are used by every language example.

  1. 1

    Choose an API

    Open an endpoint below and review its request fields, response fields and full published URL.

  2. 2

    Use your own Apify token

    Keep APIFY_TOKEN on a trusted server. MEKA does not issue or store a separate key for these endpoints.

  3. 3

    POST JSON and read the Dataset

    A successful synchronous response is a JSON Dataset array. Item fields vary by Actor, so use the response fields published for that product.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~similarweb-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"domains":["1password.com"],"maxDomains":1000,"maxConcurrency":2}'

Recorded item

Sep 27, 2026

{
  "domain": "1password.com",
  "globalRank": 5485,
  "countryRank": {
    "Country": 840,
    "CountryCode": "US",
    "Rank": 2209
  },
  "visits": "9647437",
  "bounceRate": "0.4371691206286031",
  "pagesPerVisit": "4.619642728165759",
  "timeOnSite": "157.70285663348605",
  "estimatedMonthlyVisits": {
    "2026-06-01": 8895293,
    "2026-07-01": 9471977,
    "2026-08-01": 9647437
  },
  "trafficSources": {
    "SocialOrganic": 0.01672362496371915,
    "SocialPaid": 0.0008991509642177346,
    "Mail": 0.020818899838820768,
    "Referrals": 0.14434892620133308,
    "SearchOrganic": 0.13888276159712318,
    "SearchPaid": 0.04399461192761805,
    "Direct": 0.612661880057132,
    "GenAi": 0.006080149948391083,
    "Affiliate": 0.009997576149865704,
    "DisplayAds": 0.0055924183517794684
  },
  "topCountryShares": [
    {
      "Country": 840,
      "CountryCode": "US",
      "Value": 0.51678943466488
    },
    {
      "Country": 826,
      "CountryCode": "GB",
      "Value": 0.053649297119113516
    }
  ],
  "topKeywords": [
    {
      "name": "1password",
      "esitmatedValue": 500760,
      "cpc": 1.81
    }
  ],
  "snapshotDate": "2026-08-01T00:00:00+00:00",
  "inputDomain": "1password.com",
  "normalizedDomain": "1password.com",
  "dataAvailable": true,
  "keywordVolumes": [
    {
      "name": "1password",
      "volume": 610340
    }
  ],
  "aiTraffic": {
    "available": true,
    "totalVisits": 39080.124,
    "share": 0.004050829643697701,
    "distributionBoundary": "<100K",
    "sources": [
      {
        "source": "chatgpt.com",
        "rank": 1,
        "share": 0.9351798116096048,
        "monthlyHistory": [
          {
            "date": "2026-08-01",
            "share": 0.9351798116096048
          },
          {
            "date": "2026-07-01",
            "share": 0.6751080421341549
          },
          {
            "date": "2026-06-01",
            "share": 0.7754986652550027
          }
        ]
      }
    ],
    "prompts": []
  }
}

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

Authentication

MEKA does not issue a separate API key for these endpoints. Requests authenticate with an Apify account token.

  • Send the token in the Authorization header as a Bearer token.
  • Set Content-Type: application/json for every POST body.
  • Create and manage tokens in the Apify Console. Never place a real token in browser code or a public repository.

Request headers

Authorization: Bearer $APIFY_TOKEN
Content-Type: application/json

Billing

Each API is billed from the events published for its Apify Actor, not from one site-wide request price.

Review the Actor event definitions before running a batch. LinkedIn Jobs includes a startup fee in addition to its published events. Whether a failed or empty result is charged depends on the event definition for that Actor.

See pricing

Billing events

Unit
Published Apify Actor event
Startup fee
Included where published; LinkedIn Jobs has one
Failed or empty
Follows the Actor event definition
Rates
Per product and event, not uniform credits
Current rates

Responses

A successful synchronous call returns JSON Dataset items. MEKA does not wrap that data in a separate envelope or normalize every record into one shared shape.

  • Names, nesting and value types follow the selected Actor. Review that product's response fields.
  • Null, missing or partial values follow the Actor contract and are not rewritten into a universal schema.
  • Recorded examples are historical snapshots. They are not live data and do not prove what a new run will return.

Synchronous requests time out with HTTP 408 after 300 seconds. For longer work, start an asynchronous Apify Run and read its Dataset when the run completes. Official synchronous endpoint reference

Response behavior

HTTP 200
Content-Type: application/json
Body: JSON Dataset array (items vary by Actor)

HTTP 408
Synchronous wait exceeded 300 seconds

TikTok Comments Scraper

Market research

Public video comments, replies, and profile video discovery.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~tiktok-comments-scraper/run-sync-get-dataset-items

Parameters

12 fields
  • postURLsarray

    Up to 100 full public TikTok video URLs. Use Profile usernames below for profiles; invalid video URLs are skipped independently. Default: [].

  • commentsPerPostinteger

    Maximum total delivered comments and replies for each video. Default: 100. Range: 1–10000.

  • topLevelCommentsPerPostinteger

    Maximum top-level comments collected for each video. Default: 100. Range: 1–10000.

  • maxRepliesPerCommentinteger

    Per-parent reply upper bound, default 0. Delivers main comments first; explicitly set this to collect replies. Default: 0. Range: 0–500.

  • profilesarray

    Up to 100 usernames, optional @. Videos and public reposts supported. Default: [].

  • resultsPerPageinteger

    Default 1. Upper bound on discovered posts per profile, not comment rows. Default: 1. Range: 1–100.

  • profileSortingstring

    Default latest. Native video discovery order: latest, popular or oldest. Reposts retain upstream repost order. Default: "latest".

  • profileScrapeSectionsarray

    Default [videos]. Select videos, reposts or both. Each section uses native upstream pagination; profileSorting applies to videos. resultsPerPage caps unique posts across selected sections. Default: ["videos"].

  • oldestPostDateUnifiedstring

    Inclusive UTC publication lower bound: valid YYYY-MM-DD or integer string 1..36500 (1=today, 2=yesterday). Relative days freeze at each profile unit first request, before discovery.

  • newestPostDatestring

    YYYY-MM-DD UTC video publication date; inclusive calendar day. Applies to profile discovery before comment collection.

  • excludePinnedPostsboolean

    Default false. Profile discovery only. Default: false.

  • maxConcurrencyinteger

    Process 1–16 video or profile targets at once. Each profile processes its videos sequentially. Output can arrive in completion order; this is not a requests-per-second setting. Default: 16. Range: 1–16.

Response

18 fields
  • cidstring

    Verified comment ID.

  • textnull | string

    Public comment or reply text; null if unavailable.

  • createTimenull | integer

    Unix seconds when supplied.

  • createTimeISOnull | string

    Corresponding ISO UTC creation time.

  • diggCountnull | integer

    Source-reported comment likes; null is unknown.

  • replyCommentTotalnull | integer

    Source-reported reply count, not a completeness guarantee.

  • uidnull | string

    Public author ID when available.

  • uniqueIdnull | string

    Public author username when available.

  • repliesToIdnull | string

    Null for top-level comments; directed reply target when supplied, otherwise parent. Target may be outside the sample.

  • avatarThumbnailnull | string

    Public author image URL reference; may expire.

  • likedByAuthornull | boolean

    Verified source flag when supplied.

  • pinnedByAuthornull | boolean

    Verified source pin flag, or null when unknown.

  • mentionsnull | array

    Empty array for verified absence; otherwise null when handles cannot be verified.

  • detailedMentionsnull | array

    Verified Tag-contract identities with id; name, nickName and profileUrl remain null. Unknown or unverified metadata stays null.

  • videoWebUrlstring

    Canonical full TikTok video URL.

  • submittedVideoUrlstring

    Actual video URL used for collection, including profile-discovered videos.

  • inputstring

    Actual video input URL.

  • _anyfetchobject

    Protected contractVersion, inputHash and video-ID:comment-ID recovery identity; no cookies or credentials.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~tiktok-comments-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"postURLs":["https://www.tiktok.com/@nike/video/7693986066830839054"],"commentsPerPost":20,"topLevelCommentsPerPost":10,"maxRepliesPerComment":5,"maxConcurrency":1}'

Recorded item

Oct 11, 2026

[
  {
    "cid": "7694035405498286869",
    "createTimeISO": "2026-10-07T21:07:14.000Z",
    "diggCount": 5062,
    "replyCommentTotal": 2,
    "repliesToId": null,
    "videoWebUrl": "https://www.tiktok.com/@nike/video/7693986066830839054"
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

OnlyFans Scraper

Market research

Anonymous public profiles and social links.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~onlyfans-scraper/run-sync-get-dataset-items

Parameters

2 fields
  • profileUrlsarray

    Up to 100 public profile URLs or handles. First occurrences are kept. Invalid entries are skipped. Takes precedence over handle, including when empty.

  • handlestring

    Compatibility input used only when profileUrls is absent. Accepts a bare handle or @handle.

Response

23 fields
  • idinteger

    Positive integer profile ID supplied by the public OnlyFans source.

  • usernamestring

    Public profile username.

  • namestring

    Public profile display name.

  • inputUrlstring

    Canonical OnlyFans profile URL.

  • aboutstring

    Public biography; may contain source HTML.

  • isVerifiedboolean

    Verification flag from the public source.

  • feedUserboolean

    Optional anonymous source flag; preserves true and false.

  • locationstring | null

    Public profile location if supplied.

  • websitenull | string

    Public website if supplied; not independently verified.

  • postsCountnumber

    Source-reported public post count.

  • photosCountnumber

    Source-reported public photo count.

  • videosCountnumber

    Source-reported public video count.

  • mediasCountnumber

    Source-reported public media count; no media is downloaded.

  • subscribersCountnull | number

    Public subscriber count when supplied; null does not mean zero.

  • subscribePricenumber

    Source public subscription price; no currency is inferred.

  • subscriptionBundlesarray

    Optional validated source subscription offers.

  • promotionsarray

    Optional validated source promotions.

  • avatarstring | null

    Profile image URL reference; may expire.

  • headerstring | null

    Profile header image URL reference; may expire.

  • instagramUrlstring

    Optional available source-provided social URL; not independently verified and never inferred.

  • xUrlstring

    Optional available source-provided social URL; not independently verified and never inferred.

  • tiktokUrlstring

    Optional available source-provided social URL; not independently verified and never inferred.

  • youtubeUrlstring

    Optional available source-provided social URL; not independently verified and never inferred.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~onlyfans-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"profileUrls":["https://onlyfans.com/onlyfans"]}'

Recorded item

Oct 11, 2026

[
  {
    "id": 15585607,
    "username": "onlyfans",
    "name": "OnlyFans",
    "inputUrl": "https://onlyfans.com/onlyfans",
    "isVerified": true,
    "subscribePrice": 0,
    "postsCount": 5099,
    "videosCount": 5099
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

YouTube Channel Scraper

Market research

Public channel profiles, videos, Shorts, and livestreams.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~youtube-channel-scraper/run-sync-get-dataset-items

Parameters

13 fields
  • channelsarray

    Public YouTube channel handles, IDs or URLs. Empty input succeeds with no results or result charges.

  • tabsarray

    Legacy mode: processed in this order under a shared maxResults cap. Independent limits override tabs when maxResultsShorts or maxResultStreams is supplied. Default: ["videos"].

  • sortstring

    Uses YouTube native category ordering; unsupported orders are reported as category errors.

  • maxResultsinteger

    Legacy mode: shared maximum per channel (1–1000). Independent mode: videos maximum (0–1000), enabled by maxResultsShorts or maxResultStreams. Duplicates across channels are delivered once. Default: 30. Range: 0–1000.

  • includeDescriptionboolean

    Additional public watch request only for selected items. Failed enrichment retains the basic row and descriptionComplete=false. Default: false.

  • maxResultsShortsinteger

    Optional: supplying this activates independent category limits. Unspecified Shorts and Streams limits are zero. Set all three limits to zero for channel-only output. Range: 0–1000.

  • maxResultStreamsinteger

    Optional: supplying this activates independent category limits. Unspecified Shorts and Streams limits are zero. Set all three limits to zero for channel-only output. Range: 0–1000.

  • detailConcurrencyinteger

    Maximum simultaneous selected-item detail requests. Results retain channel-list order. Default: 8. Range: 1–32.

  • oldestPostDatestring

    Optional YYYY-MM-DD (UTC day boundary) or N day / N days (rolling run-start cutoff). Forces latest order. Unknown and boundary-uncertain dates are retained and reported in OUTPUT.dateFilter.

  • includeChannelInfoboolean

    Fetch channel About once per channel. Profile fields appear in OUTPUT.channels and CHANNELS.json; unavailable fields remain null. Adds up to one upstream request per channel. Default: false.

  • startUrlsarray

    Alternative to channels. Public YouTube channel URLs only; cannot be combined with channels.

  • sortVideosBystring

    Alternative to sort; cannot be combined with sort.

  • outputFormatstring

    streamers writes COMPATIBILITY.json using competitor field names plus explicit precision and semantics. Dataset remains v1. Default: "v1".

Response

25 fields
  • idstring

    Source identity; YouTube IDs identify videos.

  • urlstring

    Canonical YouTube video or Shorts URL.

  • titlestring

    Public video title.

  • contentTypestring

    video, short or stream.

  • channelIdstring | null

    Available public channel ID.

  • channelUrlstring | null

    Available public channel URL.

  • channelTitlestring | null

    Available public channel title.

  • descriptionstring | null

    Full public description if requested and available; otherwise null or available listing evidence.

  • displayedDatestring | null

    Available source calendar date; not an inferred exact timestamp.

  • publishedAtstring | null

    Always null; exact timestamps are not inferred from relative labels.

  • publishedTextstring | null

    Original relative or public display date label.

  • dateSourcestring | null

    Source evidence for displayed date, or unknown.

  • viewsTextstring | null

    Original displayed view count, including abbreviations.

  • viewsPrecisionstring | null

    Count precision evidence; abbreviated_or_unparsed values must not be treated as exact counts.

  • durationTextstring | null

    Original displayed duration.

  • thumbnailstring | null

    Public image URL reference; may expire.

  • sourceChannelstring

    Submitted channel reference associated with this row.

  • viewsnumber | null

    Exact count only when supported by source evidence; abbreviations remain null here.

  • durationSecondsnumber | null

    Available duration in seconds.

  • descriptionCompleteboolean

    True only for a complete verified description.

  • contractVersioninteger

    Native Dataset contract version: 1.

  • detailsStatusstring | null

    ok, unavailable or not_requested; failed optional detail preserves the listing row.

  • sortRequestedstring | null

    Requested ordering.

  • sortStatusstring | null

    confirmed, requested_unconfirmed or null. Unsupported sorts are reported as category errors.

  • liveStatusstring | null

    live, upcoming or null; concurrent audience differs from accumulated views.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~youtube-channel-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"channels":["https://www.youtube.com/@NASA"],"tabs":["videos"],"sort":"latest","maxResults":3,"includeChannelInfo":true,"includeDescription":false}'

Recorded item

Oct 13, 2026

[
  {
    "contractVersion": 1,
    "id": "ErAqN6gXqZQ",
    "url": "https://www.youtube.com/watch?v=ErAqN6gXqZQ",
    "title": "NASA's SpaceX Crew-13 Mission (Official NASA Trailer)",
    "contentType": "video",
    "channelTitle": "NASA",
    "description": null,
    "descriptionComplete": false,
    "publishedText": "12d ago",
    "publishedAt": null,
    "views": null,
    "viewsText": "101K",
    "viewsPrecision": "abbreviated_or_unparsed",
    "durationSeconds": 62,
    "durationText": "1:02",
    "detailsStatus": "not_requested",
    "sortRequested": "latest",
    "sortStatus": "confirmed",
    "liveStatus": null
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

LinkedIn Jobs

Professional data

Job listings, descriptions, and optional company enrichment.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-items

Parameters

13 fields
  • keywordsstring

    Job title, skills, or free-text search (e.g. "software engineer remote"). Recommended for new searches; ignored when search URLs are provided.

  • locationstring

    City, region, or country as you would type it on LinkedIn (e.g. "United States", "London, United Kingdom", "Remote").

  • datePostedstring

    Only return jobs posted within this window. Default: "anyTime". Accepted: "anyTime", "past24Hours", "pastWeek", "pastMonth".

  • limitPerSourceinteger

    Maximum number of jobs to scrape from each input URL (or from the structured filters when no URLs are provided). Defaults to 1000 when omitted. Default: 1000. Minimum: 1.

  • scrapeCompanyboolean

    Add the company website, description, LinkedIn employee count, address, slogan, and logo. Enabled by default and automatically cached for faster repeated runs. Default: true.

  • geoIdstring

    Optional LinkedIn geoId for precise location targeting (found in a LinkedIn search URL as `geoId=`). Overrides free-text location when LinkedIn resolves it.

  • distanceinteger

    Search radius in miles around the location. Leave empty for LinkedIn's default. Minimum: 0.

  • companyIdsstring[]

    LinkedIn numeric company IDs (from a company URL or `f_C=` in a search URL), e.g. "1441" for Google. Default: [].

  • under10Applicantsboolean

    Only jobs with fewer than 10 applicants. Default: false.

  • urlsstring[]

    Advanced: paste one or more public LinkedIn Jobs search URLs to preserve an existing workflow. When URLs are provided, their search criteria take priority over the structured filters. Leave this empty for the recommended keyword search. Default: [].

  • splitByLocationboolean

    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. Default: false.

  • splitCountrystring

    Select the country whose cities will be used to split the search. Required only when 'Split search by city locations' is enabled. Accepted: "US", "CA", "MX", "GB", "DE", "FR", "NL", "CH", "SE", "NO", "DK", "FI", "IE", "ES", "IT", "PT", "BE", "AT", "PL", "CZ", "RO", "HU", "GR", "BG", "HR", "RS", "UA", "SK", "LT", "LV", "EE", "SI", "LU", "MT", "IS", "CY", "TR", "RU", "GE", "AM", "AZ", "BY", "BA", "XK", "MD", "ME", "MK", "AL", "MC", "AD", "LI", "SM", "VA", "IN", "CN", "JP", "KR", "SG", "HK", "TW", "TH", "VN", "ID", "MY", "PH", "BD", "PK", "LK", "NP", "MM", "KH", "KZ", "UZ", "KG", "TJ", "TM", "MN", "BN", "MV", "BT", "LA", "TL", "AF", "KP", "AE", "SA", "IL", "QA", "KW", "BH", "OM", "JO", "LB", "IQ", "IR", "PS", "SY", "YE", "AU", "NZ", "FJ", "PG", "WS", "TO", "VU", "SB", "KI", "MH", "FM", "PW", "NR", "TV", "BR", "AR", "CO", "CL", "PE", "EC", "UY", "VE", "BO", "PY", "GY", "SR", "CR", "PA", "GT", "DO", "PR", "JM", "TT", "HN", "SV", "NI", "BS", "BB", "CU", "HT", "BZ", "AG", "DM", "GD", "LC", "KN", "VC", "ZA", "NG", "KE", "EG", "MA", "GH", "ET", "TZ", "RW", "UG", "SN", "TN", "CI", "CM", "DZ", "AO", "MU", "ZM", "ZW", "MZ", "CD", "BW", "NA", "MG", "LY", "SD", "SS", "SO", "ML", "GA", "BJ", "BF", "MW", "NE", "TD", "SL", "LR", "ER", "GM", "GN", "GW", "TG", "MR", "SZ", "LS", "DJ", "CG", "CF", "BI", "CV", "KM", "GQ", "ST", "SC".

  • autoConvertToAiSearchboolean

    Preserve filters from older LinkedIn search URLs with LinkedIn's current AI search. Experience level, job type, and workplace filters are converted into search terms. Supported URL filters remain unchanged. Other ID-only filters may not be interpreted by LinkedIn; describe them in Keywords instead. Default: true.

Response

30 fields
  • idstringRequired

    LinkedIn job identifier.

    "4391073032"
  • linkstringRequired

    Public LinkedIn job URL.

    "https://www.linkedin.com/jobs/view/4391073032"
  • titlestringRequired

    Job title.

    "Senior Software Engineer"
  • companyNamestringRequired

    Hiring company name.

    "Example Company"
  • companyLinkedinUrlstring | null

    Public LinkedIn company URL when available.

  • companyLogostring | null

    Public company logo URL when available.

  • locationstringRequired

    Location shown on the job posting.

    "London, United Kingdom"
  • salarystringRequired

    Published salary text when available.

  • postedAtstring | null

    Published posting date when available.

    "2026-09-12"
  • benefitsstring[]Required

    Published benefits when available.

  • descriptionHtmlstring | nullRequired

    Full job description with HTML formatting when available.

  • applicantsCountstring | null

    Applicant count text when publicly available.

  • applyUrlstringRequired

    Public application URL when available.

  • descriptionTextstring | nullRequired

    Full plain-text job description when available.

  • jobPosterNamestring

    Publicly listed job poster name.

  • jobPosterTitlestring

    Publicly listed job poster title.

  • jobPosterPhotostring

    Public job poster photo URL.

  • jobPosterProfileUrlstring

    Public job poster profile URL.

  • seniorityLevelstring | null

    Seniority level shown on the job posting when available.

  • employmentTypestring | null

    Employment type shown on the job posting when available.

  • jobFunctionstring | null

    Job function shown on the job posting when available.

  • industriesstring | null

    Industries shown on the job posting when available.

  • companyDescriptionstring

    Public company description.

  • companyWebsitestring

    Public company website URL.

  • companyEmployeesCountinteger

    LinkedIn employee count when available.

  • companyAddressobject

    Structured public company address when available.

  • companySloganstring

    Public company slogan when available.

  • inputUrlstringRequired

    Search source that produced the job.

  • refIdstring | null

    LinkedIn search reference identifier when available.

  • trackingIdstring | null

    LinkedIn search tracking identifier when available.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~linkedin-jobs-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"keywords":"software engineer","location":"London, United Kingdom","limitPerSource":100,"scrapeCompany":true}'

Recorded item

No recorded response is published for this API. The request contract remains available; the response shape follows the selected Actor.

LinkedIn Company

Professional data

Public company profiles and firmographic records.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~linkedin-company-scraper/run-sync-get-dataset-items

Parameters

4 fields
  • companyUrlsstring[]

    LinkedIn company URLs or slugs. Valid company and Showcase pages are supported. Default: [].

    ["https://www.linkedin.com/company/openai/"]
  • companyNamesstring[]

    Optional best-effort exact-name resolution. For reliable bulk delivery, use LinkedIn company URLs or slugs. Default: [].

    []
  • maxCompaniesinteger

    Maximum number of unique input companies to process. Invalid or unresolved inputs may reduce the number of delivered records. Default: 100. Minimum: 1. Maximum: 1000.

    100
  • maxConcurrencyinteger

    Maximum number of company batches and name resolutions processed in parallel. Default: 3. Minimum: 1. Maximum: 10.

    3

Response

22 fields
  • namestringRequired

    Company name

  • linkedinUrlstringRequired

    Canonical LinkedIn company URL

  • websitestring | null

    Company website, when publicly exposed.

  • descriptionstring | null

    Public company description.

  • industrystring | null

    Primary public industry label.

  • companyTypestring | null

    Public company type.

  • companySizestring | null

    Public employee range label.

  • employeeCountinteger | null

    Employees shown on LinkedIn, when available.

  • followerCountinteger | null

    Public LinkedIn follower count, when available.

  • foundedYearinteger | null

    Year the company was founded, when available.

  • headquartersstring | null

    Public headquarters display text.

  • streetstring | null

    Street address, when available.

  • citystring | null

    City, when available.

  • statestring | null

    State or region, when available.

  • countrystring | null

    Country, when available.

  • postalCodestring | null

    Postal code, when available.

  • specialtiesstring[]Required

    Public company specialties.

  • logoUrlstring | null

    Public company logo URL, when available.

  • inputCompanyNamestring | null

    Original company name input, when name resolution was used.

  • resolutionConfidencestring | null

    Name resolution confidence; currently high for exact matches.

  • resolutionSourcestring | null

    Source used to resolve a company name.

  • scrapedAtstringRequired

    UTC scrape timestamp.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~linkedin-company-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"companyUrls":["https://www.linkedin.com/company/openai/","microsoft"],"maxCompanies":100,"maxConcurrency":3}'

Recorded item

Sep 24, 2026

[
  {
    "name": "Stripe",
    "industry": "Technology, Information and Internet",
    "headquarters": "South San Francisco, California",
    "description": "Stripe builds programmable financial services. Millions of companies—from the world’s largest enterprises to the most ambitious startups—use Stripe to accept payments, grow their revenue, and accelerate new business opportunities. Headquartered in San Francisco and Dublin, the company aims to increase the GDP of the internet.",
    "website": "https://stripe.com",
    "url": "https://www.linkedin.com/company/stripe",
    "followers": 1727001,
    "employeesOnLinkedIn": 16597,
    "size": "5,001-10,000 employees"
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

LinkedIn Public Posts

Professional data

Public post text, author details, and engagement.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~linkedin-public-post-scraper/run-sync-get-dataset-items

Parameters

1 fields
  • postUrlsstring[]Required

    One to 1,000 public LinkedIn post URLs or numeric activity IDs. Duplicate identities are fetched once and reported explicitly at their later input positions.

Response

17 fields
  • okbooleanRequired

    True only for a successfully fetched public post.

  • inputstringRequired

    Original input value.

  • postIdstring | null

    LinkedIn activity ID.

  • postUrlstring | null

    Canonical public post URL.

  • textstring | null

    Post text exposed publicly.

  • postTypestring | null

    Observed public post type.

  • publishedAtstring | null

    Exact JSON-LD publication time when exposed.

  • authorobject | null

    Public author information.

  • mediaobject[]

    Public images, video, or document resources.

  • articleobject | null

    Public external article card.

  • jobobject | null

    Public attached job card.

  • repostobject | null

    Public original-post details fetched from its own page.

  • engagementobject | null

    Only public total reactions and comments.

  • sourceobjectRequired

    Live public-source declaration.

  • fetchedAtstringRequired

    Time of the live fetch.

  • limitationsstring[]

    Unavailable public-data capabilities.

  • errorobject | null

    Explicit non-billable invalid, restricted, or duplicate result.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~linkedin-public-post-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"postUrls":["https://www.linkedin.com/posts/google_7-ways-google-workspace-can-help-this-school-activity-7506056712026529793-gctk"]}'

Recorded item

Sep 24, 2026

[
  {
    "postId": "6603817662688702465",
    "postUrl": "https://www.linkedin.com/posts/jimscharf_new-for-identity-federation-use-employee-activity-6603817662688702465-YTu-",
    "text": "Pass in employee attributes that you might have in your on-prem identity store, and leverage those as part of access control decisions within #AWS\nhttps://lnkd.in/gus7uSz  #ABAC @AWSIdentity",
    "postType": "article",
    "publishedAt": "2019-11-23T01:33:43.710Z",
    "authorName": "Jim Scharf",
    "authorUrl": "https://www.linkedin.com/in/jimscharf",
    "totalReactions": 77,
    "comments": 1
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

LinkedIn Profile Finder

Professional data

Profile candidates for research and manual review.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~linkedin-profile-candidate-finder/run-sync-get-dataset-items

Parameters

5 fields
  • peopleobject[]Required

    One record per known person. A full name is required; company, domain, title, location, and keywords improve ranking.

    [{"fullName":"Satya Nadella","company":"Microsoft","domain":"microsoft.com","title":"CEO","location":"Redmond"}]
  • maxCandidatesinteger

    Maximum ranked LinkedIn profile candidates returned for each successful input. Default: 5. Minimum: 1. Maximum: 10.

    5
  • includeEvidenceboolean

    Include Google result titles, snippets, and match reasons with each candidate. Default: true.

  • minScoreinteger

    Higher thresholds return fewer candidates. A score is ranking evidence, not an identity-verification guarantee. Default: 40. Minimum: 0. Maximum: 100.

    40
  • maxConcurrencyinteger

    Maximum people processed concurrently. The conservative default is validated for the Google-only route. Default: 5. Minimum: 1. Maximum: 10.

    5

Response

19 fields
  • fullNamestringRequired

    Input person's full name.

  • companystring | null

    Optional input company.

  • domainstring | null

    Optional input company domain.

  • titlestring | null

    Optional input role or title.

  • locationstring | null

    Optional input location.

  • keywordsstring | null

    Optional input keywords.

  • statusstringRequired

    Candidate, no reliable indexed result, or execution/input error. Accepted: "candidate_found", "not_found", "error".

  • bestCandidateUrlstring | nullRequired

    Top canonical linkedin.com/in candidate, or null.

  • bestCandidateTitlestring | null

    Google-indexed title for the top candidate.

  • bestCandidateSnippetstring | null

    Google-indexed snippet for the top candidate.

  • scoreintegerRequired

    Deterministic ranking score from public input and Google evidence.

  • confidencestringRequired

    Ranking band, never an identity guarantee. Accepted: "high", "medium", "low", "none".

  • matchReasonsstring[]Required

    Public clues that contributed to the ranking score.

  • requiresReviewbooleanRequired

    Always true because candidate identity must be reviewed.

  • sourcestringRequired

    Public Google-indexed web results. Accepted: "google_public_index".

  • queryCountintegerRequired

    Google-only query variants actually executed.

  • candidatesobject[]Required

    Ranked, deduplicated canonical LinkedIn profile candidates.

  • errorCodestring | null

    Machine-readable error code. Accepted: "invalid_input", "search_failed".

  • errorstring | null

    User-readable error details.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~linkedin-profile-candidate-finder/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"people":[{"fullName":"Satya Nadella","company":"Microsoft","domain":"microsoft.com","title":"CEO","location":"Redmond"}],"maxCandidates":5,"includeEvidence":true,"minScore":40}'

Recorded item

Sep 24, 2026

[
  {
    "title": "Satya Nadella - Chairman and CEO at Microsoft - LinkedIn",
    "url": "https://www.linkedin.com/in/satyanadella",
    "snippet": "Satya Nadella is an influencer. Chairman and CEO at Microsoft. Microsoft The University of Chicago Booth School of Business. Redmond, ..."
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

Google Maps Business

Local discovery

Business names, addresses, contact details, and source links.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~google-maps-business-scraper/run-sync-get-dataset-items

Parameters

15 fields
  • searchStringsArraystring[]Required

    What to look for, one term per line. "dentist in Austin TX" style terms with a place name work best. Each term is searched separately and results keep the order you typed.

  • locationQuerystring

    A single place to search in, for example "Austin, TX". Combined with each search term. Leave empty if your terms already name the place.

  • maxCrawledPlacesPerSearchinteger

    Up to 20. Google returns one page of 20 per search, and this version does not page further, so higher values are capped at 20. Use more search terms or a tighter location to get more businesses. Default: 20. Minimum: 1. Maximum: 20.

  • languagestring

    Language of names, categories and opening hours. Default: "en". Accepted: "en", "af", "az", "id", "ms", "bs", "ca", "cs", "da", "de", "et", "es", "es-419", "eu", "fil", "fr", "gl", "hr", "zu", "is", "it", "sw", "lv", "lt", "hu", "nl", "no", "uz", "pl", "pt-BR", "pt-PT", "ro", "sq", "sk", "sl", "fi", "sv", "vi", "tr", "el", "bg", "ky", "kk", "mk", "mn", "ru", "sr", "uk", "ka", "hy", "iw", "ur", "ar", "fa", "am", "ne", "hi", "mr", "bn", "pa", "gu", "ta", "te", "kn", "ml", "si", "th", "lo", "my", "km", "ko", "ja", "zh-CN", "zh-TW".

  • countryCodestring

    Only returns (and charges for) businesses whose address country or time zone confirms they are in this country. Businesses whose country cannot be confirmed are left out. Country detection relies on Google's data and is not guaranteed to be perfect. Leave empty to search without a country filter. Accepted: "", "us", "af", "al", "dz", "as", "ad", "ao", "ai", "aq", "ag", "ar", "am", "aw", "au", "at", "az", "bs", "bh", "bd", "bb", "by", "be", "bz", "bj", "bm", "bt", "bo", "ba", "bw", "bv", "br", "io", "bn", "bg", "bf", "bi", "kh", "cm", "ca", "cv", "ky", "cf", "td", "cl", "cn", "cx", "cc", "co", "km", "cg", "cd", "ck", "cr", "ci", "hr", "cu", "cy", "cz", "dk", "dj", "dm", "do", "ec", "eg", "sv", "gq", "er", "ee", "et", "fk", "fo", "fj", "fi", "fr", "gf", "pf", "tf", "ga", "gm", "ge", "de", "gh", "gi", "gr", "gl", "gd", "gp", "gu", "gt", "gn", "gw", "gy", "ht", "hm", "va", "hn", "hu", "is", "in", "id", "ir", "iq", "ie", "il", "it", "jm", "jp", "jo", "kz", "ke", "ki", "kp", "kr", "kw", "kg", "la", "lv", "lb", "ls", "lr", "ly", "li", "lt", "lu", "mo", "mk", "mg", "mw", "my", "mv", "ml", "mt", "mh", "mq", "mr", "mu", "yt", "mx", "fm", "md", "mc", "mn", "me", "ms", "ma", "mz", "mm", "na", "nr", "np", "nl", "an", "nc", "nz", "ni", "ne", "ng", "nu", "nf", "mp", "no", "om", "pk", "pw", "ps", "pa", "pg", "py", "pe", "ph", "pn", "pl", "pt", "pr", "qa", "re", "ro", "ru", "rw", "sh", "kn", "lc", "pm", "vc", "ws", "sm", "st", "sa", "sn", "rs", "sc", "sl", "sg", "sk", "si", "sb", "so", "za", "gs", "ss", "es", "lk", "sd", "sr", "sj", "sz", "se", "ch", "sy", "tw", "tj", "tz", "th", "tl", "tg", "tk", "to", "tt", "tn", "tr", "tm", "tc", "tv", "ug", "ua", "ae", "gb", "um", "uy", "uz", "vu", "ve", "vn", "vg", "vi", "wf", "eh", "ye", "zm", "zw".

  • citystring

    Optional. Added to the location.

  • statestring

    Optional. Added to the location.

  • countystring

    Optional. Added to the location.

  • postalCodestring

    Optional. Added to the location.

  • customGeolocationobject

    A GeoJSON geometry. Its centre is used as the map centre for the search. The outline itself is not applied, so results near the edge are not clipped.

  • categoryFilterWordsstring[]

    Case-insensitive match against a business’s categories. Filtered-out businesses are not written and not charged.

  • searchMatchingstring

    "all" keeps everything Google returned. "only_includes" keeps names containing the search term. "only_exact" keeps exact name matches. Default: "all". Accepted: "all", "only_includes", "only_exact".

  • placeMinimumStarsstring

    Drop businesses rated below this. Businesses with no rating are dropped when a minimum is set. Default: "". Accepted: "", "two", "twoAndHalf", "three", "threeAndHalf", "four", "fourAndHalf".

  • websitestring

    Keep only businesses that have a website, or only those without one. Default: "allPlaces". Accepted: "allPlaces", "withWebsite", "withoutWebsite".

  • disableTelemetryboolean

    Turn off the anonymous reliability telemetry described in the README. When this is on, nothing about your run — including your search terms — leaves the run. Default: false.

Response

34 fields
  • fidstring

    Google's feature ID, e.g. 0x8644b4eb0b01986f:0x6b241d4769ed491e. The stable key for joining and de-duplication.

  • placeIdstring | null

    Google Place ID, e.g. ChIJ…

  • cidstring | null

    Customer ID, the decimal form used by maps?cid= links.

  • kgmidstring | null

    Knowledge Graph machine ID, e.g. /g/11abc…

  • businessProfileIdstring | null

    Google Business Profile ID.

  • urlstring | null

    Google Maps link for this business.

  • titlestring | null

    Business name.

  • categoryNamestring | null

    Primary category, the first entry of categories.

  • categoriesstring[]

    All categories Google lists, primary first.

  • descriptionstring | null

    Editorial summary. Null when Google has none.

  • taglinestring | null

    Short tagline. Additional field: the reference Actor does not publish this.

  • addressstring | null

    Street address without the business name, e.g. 1700 S 1st St, Austin, TX 78704.

  • streetstring | null

    street

  • citystring | null

    city

  • statestring | null

    state

  • postalCodestring | null

    postalCode

  • countryCodestring | null

    Two-letter country code.

  • neighborhoodstring | null

    neighborhood

  • locationobject

    { lat, lng }, each null when Google has no coordinates.

  • phonestring | null

    Phone as Google displays it.

  • phoneUnformattedstring | null

    Phone in E.164-like digits.

  • websitestring | null

    website

  • totalScorenumber | null

    Average rating, 1 to 5.

  • reviewsCountinteger | null

    Number of reviews. Null when this response variant omitted it.

  • openingHoursobject[]

    Weekly hours as { day, hours }, Monday first. Empty when the business publishes none.

  • openingHoursCompleteboolean

    True when all seven days are present. Google returns a short variant at random; the run retries, but not every business ends up complete.

  • openStatestring | null

    Open or closed text at the moment of the scrape, e.g. "Closed · Opens 9 AM Sun". NOT a permanent-closure flag.

  • timezonestring | null

    IANA timezone, e.g. America/Chicago.

  • additionalInfoobject

    Accessibility attributes as { group: [{ label: boolean }] }. The search response carries the accessibility group only.

  • thumbnailstring | null

    Preview image URL.

  • searchStringstring | null

    The search term this row came from.

  • languagestring | null

    Language used for the search.

  • rankinteger | null

    Position within that search term's results, starting at 1.

  • scrapedAtstring

    ISO timestamp of when this row was produced.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~google-maps-business-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"searchStringsArray":["dentist in Austin"],"maxCrawledPlacesPerSearch":20,"language":"en"}'

Recorded item

Sep 24, 2026

[
  {
    "fid": "0x8644b4eb0b01986f:0x6b241d4769ed491e",
    "placeId": "ChIJb5gBC-u0RIYRHkntaUcdJGs",
    "cid": "7720327853776914718",
    "kgmid": "/g/11cn2mvqwc",
    "businessProfileId": "3134221588857878500",
    "url": "https://www.google.com/maps?cid=7720327853776914718",
    "title": "ATX Family Dental",
    "categoryName": "Dentist",
    "categories": [
      "Dentist",
      "Cosmetic dentist",
      "Dental clinic",
      "Emergency dental service",
      "Pediatric dentist",
      "Teeth whitening service"
    ],
    "description": null,
    "tagline": null,
    "address": "1700 S 1st St, Austin, TX 78704",
    "street": "1700 S 1st St",
    "city": "Austin",
    "state": "Texas",
    "postalCode": "78704",
    "countryCode": "US",
    "neighborhood": "Bouldin Creek",
    "location": {
      "lat": 30.2482229,
      "lng": -97.75597049999999
    },
    "phone": "(512) 717-3147",
    "phoneUnformatted": "+15127173147",
    "website": "https://www.atxfamilydental.com/",
    "totalScore": 4.9,
    "reviewsCount": 906,
    "openingHours": [
      {
        "day": "Monday",
        "hours": "8 AM–5 PM"
      },
      {
        "day": "Tuesday",
        "hours": "8 AM–5 PM"
      },
      {
        "day": "Wednesday",
        "hours": "8 AM–5 PM"
      },
      {
        "day": "Thursday",
        "hours": "8 AM–5 PM"
      },
      {
        "day": "Friday",
        "hours": "8 AM–4 PM"
      },
      {
        "day": "Saturday",
        "hours": "Closed"
      },
      {
        "day": "Sunday",
        "hours": "Closed"
      }
    ],
    "openingHoursComplete": true,
    "openState": "Open · Closes 5 PM",
    "timezone": "America/Chicago",
    "additionalInfo": {
      "Accessibility": [
        {
          "Wheelchair accessible entrance": true
        },
        {
          "Wheelchair accessible parking lot": true
        },
        {
          "Wheelchair accessible restroom": true
        },
        {
          "Wheelchair accessible seating": true
        }
      ]
    },
    "thumbnail": "https://lh5.googleusercontent.com/-gJOr85KBasI/AAAAAAAAAAI/AAAAAAAAAAA/L_fAS1EkjSM/s44-p-k-no-ns-nd/photo.jpg",
    "searchString": "dentist in Austin",
    "language": "en",
    "rank": 1,
    "scrapedAt": null
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

Google Maps Reviews

Local discovery

Public place reviews with timestamps and completeness context.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~google-maps-reviews-scraper/run-sync-get-dataset-items

Parameters

10 fields
  • contractVersioninteger

    Version 2 is the default anonymous feed. Original publication time and edit status are unknown (null). Choose 1 for the legacy cookie feed. A run cannot resume a Dataset or STATE created with the other version. Default: 2. Minimum: 1. Maximum: 2.

  • placesstring[]

    One place per line. Four forms are accepted and all resolve to the same place: a Google Maps link (https://www.google.com/maps?cid=… or /maps/place/…), a ChIJ… place ID, a numeric CID, or a 0x…:0x… feature ID. Anything else is skipped, reported in the run summary, and never charged.

  • sortstring

    All four are Google's own orders, not a re-sort on our side. Newest follows Google and orders by last edit time, which is what updatedTime carries. Default: "mostRelevant". Accepted: "mostRelevant", "newest", "highest", "lowest".

  • maxReviewsinteger

    Upper bound per place. A place with fewer reviews returns what it has. Version 2 fetches up to 60 reviews per page; version 1 fetches 20. Default: 100. Minimum: 1. Maximum: 100000.

  • languagestring

    BCP-47 code such as en, de, ja, pt-BR. This is Google's interface language: it changes the relative time wording ("3 weeks ago" vs "vor 3 Wochen") and the language Google would translate into. It does NOT filter reviews — review text always comes back in the language the reviewer wrote it in. Anything unrecognised falls back to en. Default: "en".

  • requireCompleteboolean

    Legacy contract version 1 only. Google sometimes answers an anonymous session with a short five-review response that has no next page, which looks exactly like a genuine last page. On: retry with fresh sessions and, if the response is still short, mark every row incomplete: true. Off: accept the short response silently. Default: true.

  • placeConcurrencyinteger

    How many places to scrape at the same time. Delivery order is preserved regardless. Default: 2. Minimum: 1. Maximum: 8.

  • sessionRetriesinteger

    Legacy contract version 1 only. How many fresh sessions to try when Google returns a truncated response, before the Actor re-queues the whole place and starts over after a longer pause. The truncation is bound to the session, and swapping sessions within a couple of seconds tends to land on the same one, so a low number here plus the re-queue is both faster and more reliable than a high number. Default: 3. Minimum: 0. Maximum: 8.

  • retryDelayMsinteger

    Legacy contract version 1 only. Pause before opening a fresh session. Retrying immediately lands on the same truncated variant more often. Default: 1500. Minimum: 0. Maximum: 10000.

  • sharedSessionExperimentboolean

    Legacy contract version 1 only. Experimental opt-in. Reuses short-lived Google Maps sessions across Data Worker instances. Enable only for controlled latency and completeness comparisons. Default: false.

Response

21 fields
  • reviewIdstringRequired

    Google's own review id. Stable across sessions and sort orders, so it is the key to de-duplicate and join on.

  • textstring | null

    The review in the language the reviewer wrote it in. Not a machine translation.

  • languagestring | null

    Language of text, as Google reports it.

  • ratingnumber | nullRequired

    1 to 5.

  • timestring | nullRequired

    Contract 2: null because the original publication time is unavailable. Contract 1: original publication time in ISO 8601 when available.

  • updatedTimestring | nullRequired

    Observed update timestamp in ISO 8601, or null when unavailable. Contract 2 cannot determine original publication time or edit status. Contract 1 falls back to time for unedited reviews. Google's newest order follows this field.

  • isEditedboolean | nullRequired

    Contract 2: null because edit status is unknown. Contract 1: whether time and updatedTime differ.

  • relativeTimestring | null

    Google's own wording, e.g. "2 months ago".

  • authorobjectRequired

    Public reviewer identity as Google shows it on the review. Nothing inferred.

  • ownerResponseobject | null

    The business reply, when there is one. Only a relative time is available.

  • imagesstring[]

    Photo URLs attached to the review.

  • placeobjectRequired

    Which place this review belongs to, plus the input it came from.

  • sortstringRequired

    Which order this run requested.

  • pagenumber

    page

  • ranknumber

    Position within this place, in the requested order.

  • variantstring | nullRequired

    Contract 2: full identifies the anonymous feed and does not guarantee completeness. Contract 1: full or teaser identifies the legacy response variant. See incomplete for known delivery limits.

  • incompletebooleanRequired

    True when we know this place was not fully delivered. See the README on truncated responses.

  • expectednumber | null

    expected

  • scrapedAtstringRequired

    scrapedAt

  • contractVersionnumberRequired

    contractVersion

  • requestedLanguagestring | null

    Google interface language this run asked for. Review text is always the original language; this only affects relative time wording.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~google-maps-reviews-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"places":["https://www.google.com/maps?cid=7590626642755549500"],"sort":"newest","maxReviews":50,"language":"en","contractVersion":2}'

Recorded item

Sep 24, 2026

[
  {
    "reviewId": "Ci9DQUlRQUNvZENodHljRjlvT25WdFVtOTFaSGt0TlV0RlFrcHZaWFZFVFc1b1RWRRAB",
    "rating": 5,
    "text": "Tí Cafe is a quaint and cozy little café off of Broadway. It boasts a diverse amount of delectable teas, coffees, and pastries.\nA great place to go with friends and family.\nStaff was kind, professional, and helpful.\n\nBeware, they often have a line out the door starting around when they open as well as off and on continuing into the afternoon.\nIt is difficult at times to find seating because of its high volumed nature.\nThis café is sought after by many people.\n\nIn the handful of times I have been there my favorite items have been the Banana Cream Pie Matcha Latte(a matcha latte presented with fresh cut banana, banana milk/custard, and what seems to be a Nilla-style cookie crumble over the top), paired with the Pandan Croissant. It is a perfect snack/pick me up to either start or end your day with. Highly recommend🖤🍵",
    "updatedTime": "2026-06-09T17:26:32.824Z",
    "dateText": "3 months ago",
    "authorName": "Avery Rollins",
    "authorUrl": "https://www.google.com/maps/contrib/103636067553999839366?hl=en"
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

Website Email Finder

Local discovery

Published email addresses with exact source-page evidence.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~website-email-finder/run-sync-get-dataset-items

Parameters

7 fields
  • domainsstring[]

    One domain per line, for example acme-widgets.de. A full URL works too; www. is stripped and duplicates are removed.

    ["apify.com"]
  • startUrlsArray<string | { url: string }>

    Website URLs to start from, when you want a specific page instead of the homepage. Combined with the domains above.

  • maxResultsinteger

    Hard cap on how many domains are written to the dataset across the whole run, including a resumed run. Minimum: 1. Maximum: 1000000.

  • maxPagesinteger

    Homepage plus up to four more: contact, about, team and legal/imprint. Lower it to 1 to scan homepages only — that is faster and cheaper, and in our own 1,039-domain test it found addresses on 39.9% of domains instead of 53.7%. Default: 5. Minimum: 1. Maximum: 5.

  • includeFreeMailboolean

    Keep gmail.com, outlook.com and similar addresses when they are published as the site's contact address. Small businesses often use one. They are always labelled separately from addresses on the site's own domain. Default: true.

  • checkMxboolean

    Adds mxAvailable to each address: whether the email domain publishes MX records. This is a DNS fact about the domain, not a check of the individual mailbox and not a deliverability guarantee. Default: true.

  • concurrencyinteger

    How many batches of 8 domains run at once. Raise it for large lists, lower it if you want a gentler crawl. Default: 4. Minimum: 1. Maximum: 10.

Response

15 fields
  • domainstring

    The input domain, lower-cased and without www.

  • inputValuestring

    Exactly what you passed in.

  • websiteUrlstring

    The URL that was actually reached, after redirects.

  • statusstring

    Only contacts_found is charged. Accepted: "contacts_found", "no_contacts_found", "unreachable".

  • outcomestring

    Fetch result of the homepage: ok, http_403, http_429, dns_failed, timeout, tls_failed, challenged, http_5xx, …

  • emailCountinteger

    emailCount Minimum: 0.

  • sameDomainCountinteger

    Addresses on the input domain, subdomains included. Minimum: 0.

  • freeMailCountinteger

    gmail, outlook and similar, published as the site contact address. Minimum: 0.

  • otherDomainCountinteger

    otherDomainCount Minimum: 0.

  • excludedVendorCountinteger

    Website-builder and tooling addresses that were dropped. Minimum: 0.

  • emailsobject[]

    One entry per address, each with its source URL, page type and surrounding text.

  • pagesScrapedobject[]

    Every page that was fetched and how it ended.

  • requestsinteger

    requests Minimum: 0.

  • tookMsinteger

    tookMs Minimum: 0.

  • contractVersioninteger

    contractVersion Minimum: 1.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~website-email-finder/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"domains":["apify.com","example-shop.co.uk"],"maxPages":5,"includeFreeMail":true,"checkMx":true}'

Recorded item

No recorded response is published for this API. The request contract remains available; the response shape follows the selected Actor.

Airbnb

Local discovery

Accommodation listings and public listing details.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~airbnb-scraper/run-sync-get-dataset-items

Parameters

15 fields
  • locationQueriesstring[]

    One destination per line, for example "Lisbon, Portugal". A comma is handled for you: Airbnb geocodes "Paris, France" to a different city unless the separator is normalised, which this Actor does.

  • startUrlsstring[]

    Airbnb room links (airbnb.com/rooms/…) or plain numeric room IDs. Order is preserved. Invalid entries are skipped and never charged.

  • includeDetailsboolean

    Off: search results only, charged as listing-delivered. On: one extra public request per listing for amenities, house rules, sub-ratings, host and images, charged as detailed-listing-delivered. Direct room URLs always fetch details. Default: false.

  • maxResultsinteger

    Airbnb caps a single search at 15 pages. Pages overlap, so a destination yields roughly 220 unique listings at most. Default: 100. Minimum: 1. Maximum: 450.

  • checkInstring

    YYYY-MM-DD. Give both dates or neither. Without dates Airbnb picks a stay window per listing, so prices are not comparable across rows.

  • checkOutstring

    YYYY-MM-DD.

  • adultsinteger

    Number of adults for the stay. Affects which listings Airbnb returns and how they are priced. Default: 1. Minimum: 1. Maximum: 16.

  • childreninteger

    Number of children aged 2 to 17. Default: 0. Minimum: 0. Maximum: 15.

  • infantsinteger

    Number of infants under 2. Airbnb does not count them toward a listing capacity. Default: 0. Minimum: 0. Maximum: 5.

  • petsinteger

    Number of pets. Listings that do not allow pets are filtered out by Airbnb. Default: 0. Minimum: 0. Maximum: 5.

  • currencystring

    Prices come back in this currency, as Airbnb formats them. Default: "USD".

  • localestring

    Language of names, descriptions and amenity labels. Default: "en-US".

  • priceMininteger

    Airbnb filters on the nightly price. The price field on each row is the stay total, so a row's own number will not fall inside this range. Minimum: 0. Maximum: 100000.

  • priceMaxinteger

    Airbnb filters on the nightly price. The price field on each row is the stay total, so a row own number will not fall inside this range. Minimum: 0. Maximum: 100000.

  • enrichUserProfilesboolean

    One extra public request per host for about text, hosting years, host rating and review count, listing count, verification and profile highlights such as languages. Charged at the same rate; a failed enrichment never fails the listing. Default: false.

Response

49 fields
  • listingIdstring

    Airbnb room ID. The stable key for joining and de-duplication.

  • urlstring | null

    Room URL with the stay parameters used.

  • namestring | null

    Listing name.

  • titlestring | null

    Airbnb's type-and-place line, e.g. "Apartment in Lisbon".

  • subtitlestring | null

    subtitle

  • sourceModestring

    "search" when the row came from a destination search, "direct_url" when it came from a room URL.

  • priceSourcestring | null

    "search_result" when a price is present. Null for direct-URL rows: Airbnb does not expose booking prices to anonymous listing pages.

  • priceobject | null

    { label, price, qualifier, originalPrice } as Airbnb formats them. Null for direct-URL rows.

  • stayWindowstring | null

    The window Airbnb priced, e.g. "Nov 29 – Dec 4".

  • checkInstring | null

    checkIn

  • checkOutstring | null

    checkOut

  • isAvailableboolean | null

    Null in this version: Airbnb does not expose booking availability on anonymous listing pages.

  • ratingnumber | null

    rating

  • reviewsCountinteger | null

    reviewsCount

  • ratingTextstring | null

    Rating as shown, e.g. "4.81 (209)". "New" for new listings.

  • ratingDetailsobject | null

    Six sub-ratings plus overall and review count. Only when details were fetched.

  • coordinatesobject

    { latitude, longitude }.

  • propertyTypestring | null

    propertyType

  • roomTypestring | null

    roomType

  • personCapacityinteger | null

    personCapacity

  • homeTierinteger | null

    homeTier

  • subDescriptionobject | null

    { title, items } such as "4 guests", "1 bedroom".

  • detailsstring[]

    Bed and bath line from the search card.

  • descriptionstring | null

    description

  • htmlDescriptionstring | null

    htmlDescription

  • descriptionOriginalLanguagestring | null

    descriptionOriginalLanguage

  • seoTitlestring | null

    seoTitle

  • metaDescriptionstring | null

    metaDescription

  • locationDescriptionsobject[]

    Neighbourhood sections. Titles are available; the body text is not exposed to anonymous pages, so content is usually null.

  • breadcrumbsobject[]

    breadcrumbs

  • amenitiesobject[]

    Grouped amenities, including entries marked unavailable.

  • houseRulesobject | null

    houseRules

  • highlightsobject[]

    highlights

  • imagesobject[]

    De-duplicated across search card and detail page.

  • badgesstring[]

    Such as "Guest favorite".

  • paymentMessagesstring[]

    Such as "Free cancellation".

  • hostobject | null

    Identity always; about, hosting years, host rating and listing count only when host enrichment ran.

  • coHostsobject[]

    coHosts

  • androidLinkstring | null

    androidLink

  • iosLinkstring | null

    iosLink

  • hasDetailsboolean

    Whether the detail page was fetched for this row.

  • hostEnrichedboolean

    Whether host enrichment succeeded.

  • detailErrorstring | null

    Set when the detail fetch failed and the row fell back to search data.

  • hostErrorstring | null

    hostError

  • searchStringstring | null

    The destination this row came from. Null for direct-URL rows.

  • pageinteger | null

    page

  • rankinteger | null

    rank

  • scrapedAtstring

    scrapedAt

  • contractVersioninteger

    contractVersion

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~airbnb-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"locationQueries":["Lisbon, Portugal"],"checkIn":"2026-11-10","checkOut":"2026-11-14","adults":2,"includeDetails":true}'

Recorded item

Sep 24, 2026

[
  {
    "listingId": "20465848",
    "url": "https://www.airbnb.com/rooms/20465848",
    "name": "Chiado Loft 17 Charm Boutique Apartment",
    "title": "Apartment in São Paulo",
    "rating": 4.93,
    "stayWindow": null,
    "checkIn": null,
    "checkOut": null,
    "reviews": 563,
    "price": "$263",
    "priceQualifier": "for 2 nights"
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

Similarweb

Market research

Website traffic, engagement, and audience estimates.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~similarweb-scraper/run-sync-get-dataset-items

Parameters

3 fields
  • domainsstring[]Required

    Websites to analyse. Accepts example.com, www.example.com or https://example.com/path — the host is extracted for you. Entries that cannot be a domain are skipped and never charged. Default: [].

    ["stripe.com","nytimes.com"]
  • maxDomainsinteger

    Upper bound on unique domains processed in one run. Duplicates collapse to a single lookup and a single result. Default: 1000. Minimum: 1. Maximum: 5000.

    1000
  • maxConcurrencyinteger

    How many batches of 16 domains run in parallel. The upstream rate limit is the real ceiling, so raising this mostly adds waiting. Default: 2. Minimum: 1. Maximum: 10.

    2

Response

24 fields
  • domainstringRequired

    Normalized host that was looked up.

  • titlestring

    Site title. Empty string when the source has none.

  • descriptionstring

    Site description. Empty string when the source has none.

  • categorystring

    Two-level category label, e.g. finance/banking_credit_and_lending.

  • globalRankinteger | null

    Global traffic rank. Null for sites without one, including many subdomains and link shorteners.

  • countryRankobject

    Rank in the site's top country: Country, CountryCode, Rank. All null when absent.

  • categoryRankstring | null

    Rank inside the category, as a string.

  • visitsstringRequired

    Visits in the snapshot month, as a string. "0" is a real zero.

  • bounceRatestring

    Bounce rate from 0 to 1, as a string.

  • pagesPerVisitstring

    Average pages per visit, as a string.

  • timeOnSitestring

    Average seconds on site, as a string.

  • estimatedMonthlyVisitsobject

    Three months of visits keyed by YYYY-MM-01.

  • trafficSourcesobject

    Share of visits by source, each 0 to 1: SocialOrganic, SocialPaid, Mail, Referrals, SearchOrganic, SearchPaid, Direct, GenAi, Affiliate, DisplayAds.

  • topCountrySharesobject[]

    Visit share by country: Country, CountryCode, Value.

  • topKeywordsobject[]

    Top organic keywords: name, esitmatedValue, cpc. The misspelled key is the source's and is preserved.

  • competitorsobject[]

    Empty array. The public source used here does not return competitor lists.

  • isDataFromGAboolean

    True when the site owner publishes its own analytics.

  • screenshotstring

    Source-hosted preview image URL.

  • snapshotDatestringRequired

    Month the numbers describe.

  • inputDomainstring

    The domain exactly as the caller typed it.

  • normalizedDomainstring

    The cleaned form that was queried. Internationalized names keep their Unicode spelling and are never converted to punycode.

  • dataAvailableboolean

    Whether the source has measurable traffic for this site. False rows are written so the list stays aligned and are never charged.

  • keywordVolumesobject[]

    Organic search volume per keyword, aligned with topKeywords: name, volume.

  • aiTrafficobject

    AI referral traffic: available, totalVisits, share (0 to 1), distributionBoundary, sources (per LLM with rank, share and monthlyHistory) and prompts. Unknown numbers are null; a confirmed absence is an empty array.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~similarweb-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"domains":["1password.com"],"maxDomains":1000,"maxConcurrency":2}'

Recorded item

Sep 27, 2026

{
  "domain": "1password.com",
  "globalRank": 5485,
  "countryRank": {
    "Country": 840,
    "CountryCode": "US",
    "Rank": 2209
  },
  "visits": "9647437",
  "bounceRate": "0.4371691206286031",
  "pagesPerVisit": "4.619642728165759",
  "timeOnSite": "157.70285663348605",
  "estimatedMonthlyVisits": {
    "2026-06-01": 8895293,
    "2026-07-01": 9471977,
    "2026-08-01": 9647437
  },
  "trafficSources": {
    "SocialOrganic": 0.01672362496371915,
    "SocialPaid": 0.0008991509642177346,
    "Mail": 0.020818899838820768,
    "Referrals": 0.14434892620133308,
    "SearchOrganic": 0.13888276159712318,
    "SearchPaid": 0.04399461192761805,
    "Direct": 0.612661880057132,
    "GenAi": 0.006080149948391083,
    "Affiliate": 0.009997576149865704,
    "DisplayAds": 0.0055924183517794684
  },
  "topCountryShares": [
    {
      "Country": 840,
      "CountryCode": "US",
      "Value": 0.51678943466488
    },
    {
      "Country": 826,
      "CountryCode": "GB",
      "Value": 0.053649297119113516
    }
  ],
  "topKeywords": [
    {
      "name": "1password",
      "esitmatedValue": 500760,
      "cpc": 1.81
    }
  ],
  "snapshotDate": "2026-08-01T00:00:00+00:00",
  "inputDomain": "1password.com",
  "normalizedDomain": "1password.com",
  "dataAvailable": true,
  "keywordVolumes": [
    {
      "name": "1password",
      "volume": 610340
    }
  ],
  "aiTraffic": {
    "available": true,
    "totalVisits": 39080.124,
    "share": 0.004050829643697701,
    "distributionBoundary": "<100K",
    "sources": [
      {
        "source": "chatgpt.com",
        "rank": 1,
        "share": 0.9351798116096048,
        "monthlyHistory": [
          {
            "date": "2026-08-01",
            "share": 0.9351798116096048
          },
          {
            "date": "2026-07-01",
            "share": 0.6751080421341549
          },
          {
            "date": "2026-06-01",
            "share": 0.7754986652550027
          }
        ]
      }
    ],
    "prompts": []
  }
}

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

Google Ads Transparency

Market research

Public advertiser information and advertising creative.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~google-ads-transparency-scraper/run-sync-get-dataset-items

Parameters

16 fields
  • resultTypestring

    "ads" returns individual ad creatives. "advertisers" returns one summary row per advertiser — a cheap way to check which companies run Google Ads. Default: "ads". Accepted: "ads", "advertisers".

  • queriesstring[]

    Free-text brand names (e.g. "Nike") or bare domains (e.g. "nike.com"). Brand names are resolved to advertisers through the Transparency Center's own autocomplete; anything that looks like a domain is used directly.

    ["Nike","hellofresh.com"]
  • domainsstring[]

    Exact domains to pull ads for. Returns every advertiser account whose ads point at that domain.

    ["nike.com"]
  • advertiserIdsstring[]

    Specific advertiser IDs starting with "AR", as they appear in an advertiser's Transparency Center URL.

    ["AR16735076323512287233"]
  • startUrlsArray<string | { url: string }>

    Paste Transparency Center URLs: advertiser pages, creative pages, or domain search pages. They are parsed automatically.

    [{"url":"https://adstransparency.google.com/advertiser/AR16735076323512287233?region=US"}]
  • regionstring

    ISO 3166-1 alpha-2 country code (US, DE, GB …), or ANYWHERE for no country filter. Several codes can be given comma-separated; results are the union. Default: "US".

    "US"
  • platformsstring[]

    Restrict to ads served on specific Google surfaces. Leave empty for all. Default: [].

  • adFormatstring

    Filter by creative format. Several formats can be given comma-separated. Default: "ALL". Accepted: "ALL", "TEXT", "IMAGE", "VIDEO".

  • startDatestring

    Only ads shown on or after this date (YYYY-MM-DD).

    "2026-01-01"
  • endDatestring

    Only ads shown on or before this date (YYYY-MM-DD).

    "2026-06-01"
  • maxAdsPerSearchinteger

    Maximum ad creatives to collect for each domain or advertiser. Default: 100. Minimum: 1. Maximum: 50000.

  • maxResultsinteger

    Hard cap on delivered rows across all targets. This is what you pay for. Default: 1000. Minimum: 1. Maximum: 100000.

  • maxAdvertisersPerQueryinteger

    When a brand-name query resolves to several advertisers, how many of the top matches to scrape. Default: 5. Minimum: 1. Maximum: 50.

  • includeDetailsboolean

    On by default. Adds every creative variation, the per-country reach with each country's last-shown date, and EU impression ranges. Turn it off for a faster, list-only run. Default: true.

  • detailConcurrencyinteger

    How many detail batches to fetch in parallel. Default: 2. Minimum: 1. Maximum: 8.

  • disableTelemetryboolean

    Turn off the anonymous reliability telemetry described in the README. When this is on, nothing about your run — including your search terms — leaves the run. Default: false.

Response

29 fields
  • creativeIdstring

    Transparency Center creative ID, e.g. CR09405416287280037889.

  • advertiserIdstring

    Transparency Center advertiser ID, e.g. AR16735076323512287233.

  • advertiserNamestring | null

    Advertiser display name as Google publishes it.

  • domainstring | null

    Landing domain the ad points at. Null when the creative was reached by advertiser or creative URL, where the search row is not available.

  • formatstring | null

    TEXT, IMAGE or VIDEO. Unknown enum values come through as the raw number.

  • firstShownstring | null

    ISO timestamp of the first recorded impression.

  • lastShownstring | null

    ISO timestamp of the most recent recorded impression.

  • shownForDaysinteger | null

    Days the creative has been running, as reported by Google. Null when absent; never 0 for unknown.

  • previewTypestring | null

    "image" for an archived bitmap preview with a direct URL, "iframe" for a Google-hosted render page. Null when neither is present.

  • imageUrlstring | null

    Direct CDN URL of the archived image preview. Null for render-page previews.

  • previewUrlstring | null

    Google-hosted preview render page. Not a raw asset URL. Null for archived image previews.

  • widthinteger | null

    Pixel width of the archived image preview. Null for render-page previews.

  • heightinteger | null

    Pixel height of the archived image preview. Null for render-page previews.

  • googleCreativeIdstring | null

    Google's internal creative ID, parsed from the preview URL. Null for plain image ads.

  • googleCustomerIdstring | null

    Obfuscated Google Ads customer ID, parsed from the preview URL. Groups ads from the same ad account. Null for plain image ads.

  • adGroupIdstring | null

    Ad group ID parsed from the preview URL. Clusters ads from the same campaign. Null for plain image ads.

  • versionIdstring | null

    Creative version ID parsed from the preview URL. Null when absent.

  • adUrlstring

    Transparency Center link to this creative.

  • regionstring

    The country filter this row was collected under, echoed back. ANYWHERE when no country filter was used.

  • variationCountinteger

    Number of creative variations. Only present when includeDetails is on.

  • variationsobject[]

    Every creative variation: type, imageUrl, previewUrl, width, height and internal IDs. Only present when includeDetails is on.

  • regionsShownobject[]

    Every country the ad ran in, each with that country's last-shown date. Only present when includeDetails is on.

  • euTransparencyobject

    EU DSA transparency block: available, impressions.lowerBound / upperBound, firstShownDate, lastShownDate and platformDistribution. available is false when Google publishes none for this creative. Only present when includeDetails is on.

  • namestring | null

    Advertiser display name.

  • countryCodestring | null

    ISO 3166-1 alpha-2 country the advertiser is registered in.

  • approxAdCountLowinteger | null

    Lower bound of Google's approximate ad count for this advertiser. Null when Google publishes no range.

  • approxAdCountHighinteger | null

    Upper bound of Google's approximate ad count. Null when Google publishes no range.

  • matchedQuerystring | null

    The input that produced this row.

  • advertiserUrlstring

    Transparency Center link to the advertiser page.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~google-ads-transparency-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"queries":["Nike"],"domains":["hellofresh.com"],"resultType":"ads","region":"US","maxResults":100,"includeDetails":true}'

Recorded item

Sep 24, 2026

[
  {
    "advertiserId": "AR01625195283841286145",
    "creativeId": "CR10286644044847120385",
    "advertiserName": "Shopify Inc.",
    "domain": "shopify.com",
    "format": "TEXT",
    "firstShown": "2025-12-19T08:00:00.000Z",
    "lastShown": "2026-09-24T15:45:31.000Z",
    "imageUrl": "https://tpc.googlesyndication.com/archive/simgad/2754200431253643147",
    "url": "https://adstransparency.google.com/advertiser/AR01625195283841286145/creative/CR10286644044847120385?region=anywhere"
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

LinkedIn Ads Library

Market research

Public advertising records. Interactive preview is paused during source maintenance.

Preview paused

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~linkedin-ads-library-scraper/run-sync-get-dataset-items

Parameters

4 fields
  • startUrlsArray<string | { url: string }>Required

    LinkedIn Ad Library search URLs or LinkedIn company URLs. Search parameters such as accountOwner, payer, keyword, countries, dates, impressions, targeting, and sort are preserved.

    [{"url":"https://www.linkedin.com/ad-library/search?accountOwner=apify&countries=US&dateOption=last-30-days"}]
  • resultsLimitinteger | null

    Maximum successfully delivered ads per input URL. Leave empty to continue until LinkedIn reports the true end or your run budget is reached. Minimum: 1. Maximum: 100000.

    100
  • skipDetailsboolean

    Fast list mode. Returns the public search-card fields, which may contain truncated text and fewer details. Full details are recommended. Default: false.

  • disableTelemetryboolean

    Turn off the anonymous reliability telemetry described in the README. When this is on, nothing about your run — including the keywords in your Ad Library URLs — leaves the run. Default: false.

Response

25 fields
  • adIdstringRequired

    LinkedIn Ad Library ad identifier.

  • adLibraryUrlstringRequired

    Canonical public Ad Library detail URL.

  • advertiserLogostring | null

    Public advertiser logo or profile image URL.

  • advertiserNamestringRequired

    Advertiser name displayed by LinkedIn.

  • advertiserUrlstring | null

    Public LinkedIn company or member URL.

  • availabilityobject | null

    First and last shown dates when LinkedIn exposes them.

  • bodystring | null

    Full public ad copy in detail mode; possibly truncated in list mode.

  • clickUrlstring | null

    Public creative or CTA destination URL.

  • ctasstring[]

    Public call-to-action labels.

  • formatstringRequired

    Observed LinkedIn creative format.

  • headlinestring | null

    Creative headline when publicly present.

  • imageUrlstring | null

    Primary image creative URL.

  • videoUrlstring | null

    Highest-bitrate public MP4 URL.

  • documentUrlstring | null

    Public document PDF URL.

  • imageUrlsstring[]

    All public document page images.

  • senderImageUrlstring | null

    Message Ad sender image.

  • paidBystring | null

    Entity LinkedIn identifies as paying for the ad.

  • impressionsstring | null

    Public impression range.

  • impressionsPerCountryobject[]

    Country impression percentages when published.

  • targetingobject | null

    Top public targeting parameters.

  • thoughtLeaderMemberNamestring | null

    Thought Leader ad member name.

  • thoughtLeaderMemberUrlstring | null

    Thought Leader public member URL.

  • thoughtLeaderMemberImageUrlstring | null

    Thought Leader member image.

  • thoughtLeaderJobTitlestring | null

    Thought Leader public headline.

  • startUrlstringRequired

    Original input source URL that discovered the ad.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~linkedin-ads-library-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"startUrls":[{"url":"https://www.linkedin.com/ad-library/search?accountOwner=apify&countries=US&dateOption=last-30-days"}],"resultsLimit":100,"skipDetails":false}'

Recorded item

Sep 24, 2026

[
  {
    "adId": "1619931196",
    "adLibraryUrl": "https://www.linkedin.com/ad-library/detail/1619931196",
    "advertiserName": "",
    "body": "The exact decks, investor lists, and AI agents top startups used to close their first checks. Free guide, free Notion tr…",
    "format": "DOCUMENT"
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

Pinterest

Market research

Public pins, boards, profiles, and media references.

Run in playground API details
POSThttps://api.apify.com/v2/acts/meka.im~pinterest-scraper/run-sync-get-dataset-items

Parameters

7 fields
  • queriesstring[]

    Keywords to search Pinterest for. Each keyword is paginated until the run hits Max results.

    ["minimalist kitchen","summer outfit ideas"]
  • startUrlsstring[]

    Paste Pinterest URLs: a pin, a profile, a profile's Created or Saved tab, a board, or a search results page. Each is routed automatically.

    ["https://www.pinterest.com/nike/","https://www.pinterest.com/nike/nike-running/","https://www.pinterest.com/pin/633600241367267936/"]
  • typestring

    What keyword searches return. Pins and videos come back as pin records; boards and profiles come back as board and profile records. Default: "all-pins". Accepted: "all-pins", "videos", "boards", "profiles".

  • limitinteger

    Hard cap on delivered rows across every keyword and URL. This is what you pay for. Default: 100. Minimum: 1. Maximum: 100000.

  • includeDetailsboolean

    On by default. Adds one lookup per pin for video files, merchant attribution and product metadata. Turn it off for a faster, list-only run. Default: true.

  • bookmarkstring

    Optional. Paste the lastBookmark from a previous run's output to continue paginating the first target where it stopped.

  • detailConcurrencyinteger

    How many detail batches to fetch in parallel. Default: 2. Minimum: 1. Maximum: 8.

Response

17 fields
  • typestring

    "pin", "video", "board" or "profile".

  • entity_typestring

    The record's entity: pin, board or profile. Videos are pins.

  • schemaobject

    Contract version and entity type.

  • idstring

    Pinterest ID of the pin, board or profile.

  • urlstring | null

    Canonical Pinterest URL for the record.

  • titlestring | null

    Pin title, board name or profile display name.

  • source_urlstring | null

    The Pinterest page this record came from.

  • seed_typestring

    "query" when the record came from a keyword, "url" when it came from a pasted URL.

  • seed_valuestring

    The keyword or URL that produced this record.

  • pinobject | null

    Pin fields: title, description, alt_text, created_at, link, domain, dominant_color, is_promoted, is_video, reaction_counts, story, product_metadata_type, rich_summary_type. Present on pin records.

  • creatorobject | null

    The pin's creator: id, username, full_name, follower_count, three avatar sizes, profile url, merchant and identity verification flags.

  • board_refobject | null

    The board the pin sits on: id, name, url, pin_count, section_count, collaborator_count, is_collaborative, cover images and the board owner.

  • mediaobject | null

    images (thumb / small / medium / large / original plus the raw images_by_size table) and video (hls_url, mp4_url, duration_ms, width, height, thumbnail, variants). video is null for still pins.

  • merchant_attributionobject | null

    Merchant attribution block, present on shopping pins once details are fetched.

  • detail_fetchedboolean

    Whether this row went through the per-pin detail lookup. Tells apart "the source has no value" from "we did not look".

  • boardobject | null

    Board record fields, including description and follower_count. Present on board records.

  • profileobject | null

    Profile record fields, including about, pin_count, board_count, following_count and website_url. Present on profile records.

curl --request POST \
  'https://api.apify.com/v2/acts/meka.im~pinterest-scraper/run-sync-get-dataset-items' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{"queries":["minimalist kitchen","summer outfit ideas"],"type":"all-pins","limit":100,"includeDetails":true}'

Recorded item

Sep 24, 2026

[
  {
    "id": "218987600628163284",
    "url": "https://www.pinterest.com/pin/218987600628163284/",
    "title": "The Rental Edit",
    "description": "Shop The Rental Edit on Etsy for renter-friendly styling tips, room-by-room ideas, and budget-friendly sources.",
    "createdAt": "2026-06-09T17:05:43.000Z",
    "link": "https://studiobwithabby.etsy.com/listing/4517763392",
    "domain": "studiobwithabby.etsy.com",
    "isVideo": false
  }
]

Historical snapshot. A synchronous request returns a JSON Dataset array; item fields vary by Actor.

Errors

An HTTP error response and an Actor-level failure are different signals. Inspect both the status code and the returned body, and do not assume a shared JSON error envelope across Actors.

400
Invalid input

The request body is not valid JSON or a value does not satisfy the Actor input schema.

401 / 403
Authentication or authorization

The Apify token is missing, invalid or does not have access to the requested Actor or run.

404
Actor or route not found

The Actor identifier or endpoint path does not resolve. Confirm the complete published endpoint URL.

408
Synchronous wait exceeded

A synchronous request waited longer than 300 seconds. Use an asynchronous Run and read its Dataset when complete.

429
Rate or concurrency limit

The request exceeded an Apify platform or account limit. Inspect response headers and account limits before retrying.

5xx
Upstream or platform failure

Apify or a dependent upstream service failed. Check the run status and response body before deciding whether to retry.

How to handle it

  1. 1Read both the HTTP status and the response body. These endpoints do not promise one shared JSON error envelope across all Actors.
  2. 2For 400, 401, 403 and 404, correct the request, token or URL instead of retrying unchanged.
  3. 3For HTTP 408, start an asynchronous Apify Run, wait for completion and then read its Dataset. The 300 second synchronous limit is an Apify platform behavior.
  4. 4For 429 and 5xx, back off before retrying and inspect the Actor run status. An HTTP success can still contain an Actor-level data problem.
Apify API docs