Skip to content
ScrapeField

5–11 October 2026

What changed that week, dated, in the order it happened.

  1. Site

    The status page says how each endpoint is now

    Changed

    • An endpoint's state on the status page is judged on its last 24 hours, where it had 50 calls in that time. It was judged on 30 days, so one bad day kept an endpoint "Degraded" for a month after it recovered. The 30 days' success rate is still shown beside it.
  2. Dashboard

    Bank debits, closed accounts, the low-balance email, and the API's last odd answers

    Fixed

    • A purchase paid by bank debit stays in the billing page's receipts as "processing" until the bank pays, which can take a few days. It left the list after 31 minutes.
    • Signing in, or signing up, with the address of a closed account sends an email that says the account is closed and how to open it again. It said there was no account, and offered to create one.
    • A path with a slash at the end, such as `/v1/status/`, answers as the same path without it: JSON, with a request id. It answered with a plain-text redirect.
    • `GET /v1` carries an `x-request-id`, as every other answer does.
    • A username for Instagram, TikTok or X may start with an @, and the docs now say so. They said "without the leading @", though the API always accepted one.
    • A low-balance line set above the balance you have sends its email at once. No call could cross it, so it never sent one.
    • The billing page says when calls stop: when a call costs more than the balance, not at zero.
  3. Agents

    Agent sign-ups, the usage page, and the docs

    Fixed

    • An agent whose name is longer than 32 characters now gets its key. The key's name is the agent's, shortened to fit the 40 characters a key name may have, and ends in "(agent)". Until now every check failed for a day, while its person was told "Approved".
    • Approving an agent on an account that already has 10 active keys says so at once, before the code is checked, and the request waits while you revoke one.
    • A call answered "not found" from the cache now reads in the usage log as the first such call does: refunded, at no cost. It was counted as "failed and charged" on the usage page. Past rows are corrected.
    • The docs: the demo is captured every week, not every month; the limits page names the hourly limit on calls that find nothing; the quickstart names the "API keys" page and the "Confirm and sign in" button.

    Improved

    • A credit badge copies as "7–33 credits", with its space, and the status page's rows copy with a space between their cells.
    • The pricing page describes its packs as structured data, each an offer at its price.
  4. API

    The API's edges

    Fixed

    • A `500` now carries an `x-request-id` header, the same id as its body's `request_id`, as every other answer does.
    • A method other than `GET` on a path that is no endpoint, such as `PUT /v1/nothing/here`, answers `404` `unknown_endpoint`. It answered `405`, as if the path existed.
    • `?demo=1` or `?demo=yes` answers `400` `invalid_parameter`, saying the value is `true`. It answered `missing_api_key`.

    Improved

    • `GET /v1/openapi.json` and `GET /v1/errors` are kept five minutes at the edge: they change only with a release.
  5. API

    Instagram account search gives names and links

    Changed

    • `instagram/search` returns `instagram_search_result`: each account's `username`, `name` and `url`. It returned whole accounts, but its source now answers from a search index with no counts, and every call failed. Call `instagram/profile` with a username for the whole account. A page still costs 3 credits.
  6. API

    Google Maps reviews come whole again

    Fixed

    • A page of `google-maps/reviews` gave one review instead of the whole page, and its next page gave none. Every review carries its place's `place_id`, and that id was read as the review's own, so all of a place's reviews counted as one. Each review now counts by its `review_id`.
  7. Dashboard

    Your trial is yours, and confirmation emails keep coming

    Fixed

    • If someone else's agent asked for an account with your address before you signed up, you got no trial credits. Signing up on the site now gives you the 2,000 credits, as it says.
    • The day's budget for confirmation emails was one budget for everyone, so a single network could use it up. Each network now has its own share.
  8. API

    A call that finds nothing answers again from the cache

    Changed

    • A call for something that does not exist, such as an account that is not there, still costs nothing. Its answer is now kept for 6 hours, or the endpoint's cache window if that is shorter, so the same call answers at once.
    • An account can make 1,000 calls an hour that find nothing, or 50 before it buys credits. Past that, the next call gets `not_found_limit` (HTTP 429) with a `Retry-After`. A failure on our side never counts.
  9. API

    The price in the endpoint list is the usual call's

    Changed

    • `GET /v1/endpoints` and `GET /v1/status` give `x/posts` as 13 credits, an account's posts, with `credits_by` saying 3 for `community_url`. `linkedin/posts` is 7, a person's posts or a search, and 3 for `company_url`. Both said 3 before, the cheaper call. No call costs more or less than it did.
  10. Dashboard

    Nobody on one network can keep you from signing in

    Changed

    • One inbox gets at most five emails an hour from one network, and ten from all networks together. Before, it was five from everyone, so a stranger asking five times an hour for your address kept you out of every browser you had not signed in from.
    • A request we refuse sends no email, so it no longer counts toward the inbox's limit. It still counts toward the limit of the network that made it.
  11. API

    One word for one thing in the parameters

    Changed

    • `url` is a link to the thing a call is about, and `id` is its id, on every endpoint. `linkedin/posts` and `linkedin/activity` take a person as `url`; `linkedin/job`, `linkedin/ad`, `linkedin/group` and `x/community` take their id as `id`.
    • A sort is `relevance` or `newest` everywhere: `google-maps/reviews` said `relevant`, and LinkedIn's comments and jobs said `date`.
    • Nothing breaks: the old names (`profile_url`, `job_id`, `ad_id`, `group_id`, `community_id`) and words (`relevant`, `date`) still work, read as the new ones. Giving an old name and its new one together is refused.
  12. API

    LinkedIn posts keep to their date window, and post links in every form

    Fixed

    • `linkedin/posts` with `posted_within` and a `profile_url` or `company_url` returned posts from outside the window, up to seven weeks old. It now returns only the posts inside the window, and the list ends at the first older post. A search by `query` already kept to it.
    • A LinkedIn list whose answer came back without its list was charged as an empty page. It now fails with `upstream_unavailable`, and the call is refunded.
    • A field that can be `null` is `null` when there is nothing in it, never an empty string: TikTok comments with no words gave `""`. An optional object with nothing in it, such as a review with no reply from the owner, is `null` too.
    • A row repeated inside one page is given once. TikTok's trending feed gave each video twice.

    Improved

    • `GET /v1/endpoints` gives `available: false` and the reason for an endpoint that cannot be served at the moment, as `GET /v1/status` does. Over MCP, that tool's description says so first, and the tool stays in the list.
    • In the demo, an answer from an endpoint that cannot be served live says so in its note, and with no key an MCP tool says it too. The demo itself still answers.
    • `linkedin/post`, `linkedin/comments` and `linkedin/reactions` take a post's link by its share id too, as "Copy link to post" often gives it: `/feed/update/urn:li:ugcPost:<id>`, `/feed/update/urn:li:share:<id>`, or `/posts/…-ugcPost-<id>-…`. A repost's share id gives the original post.
  13. Site

    Use cases and head-to-head comparisons

    New

    • Use-case pages: social listening, creator discovery, local lead lists, and hiring and job-change signals. Each has its worked examples with what a run costs, the guides, and what it does not do.
    • A comparison of every two of Firecrawl, Apify, Apollo, PhantomBuster, Outscraper, ScrapeCreators and Evaboot, with ScrapeField beside them.
    • A glossary of the ids and terms in the data: a Google place ID, LinkedIn URNs, vanity names and member ids, an Instagram shortcode, a TikTok video id, a Snowflake ID, engagement rate, cursor pagination and what a scraping API is.
    • Three free tools that read a post's date from its link, in the browser: LinkedIn post date (to the millisecond, where LinkedIn shows "2w"), TikTok video date and Instagram post date. Beside Tweet id to date, in the footer.

    Improved

    • The comparison with Google Maps Platform has a calculator: a month of searches, places and photos at Google's prices and here, with Google's free calls taken off first.

    Changed

    • The privacy notice is rewritten short and plain: what we keep and for how long, how we measure the site, what we never take, and who is responsible.
    • The footer has a Compare column.
  14. API

    Batch jobs and webhooks are gone

    Changed

    • Batch jobs are removed: POST, GET and DELETE /v1/jobs, a job's results, and the webhooks a job sent. Every call is one GET that returns the finished answer. To make many calls, run them side by side, up to your account's limit of calls at once.
    • A request to /v1/jobs now gets unknown_endpoint (404). The error codes that only jobs used (too_many_jobs, job_too_large, job_not_found, results_expired and job_interrupted) are gone from the catalogue.
    • The dashboard's Jobs and Webhooks pages are gone, and with them the account's webhook signing secret.
  15. Site

    ScrapeField vs the X API

    New

    • A comparison with X's own API: what it charges per post and per account read since it moved to pay per use, its monthly cap, what reading the same data costs here, and where X's API is the better choice. With a migration example from API v2.
  16. API

    A filter that cannot apply is refused, not dropped

    Fixed

    • `linkedin/activity` refuses `posted_within` with `type=reactions` (`invalid_parameter`), in the demo as on a live call. The demo took it without a word.
    • `linkedin/ads` refuses `start_date` without `end_date`, and the other way round. A live call dropped a lone date and searched every date.
    • Without a key, the API's answer and the sign-up, quickstart and MCP pages name the way an agent gets one: `POST /v1/signup`.
  17. Agents

    An agent can get a key for the person it works for

    curl -X POST "https://api.scrapefield.com/v1/signup" \
      -H "Content-Type: application/json" \
      -d '{"email": "you@example.com", "agent": "Claude Code"}'

    New

    • `POST /v1/signup`, with no key: the person's address, and what the agent is called. We email them a link; the agent shows them `user_code`; they sign in and type it. Then `GET /v1/signup`, with the returned `id` as the bearer token, answers `approved` with a key, once.
    • Over MCP, with no key: the tools `sign_up` and `check_sign_up`.
    • Without the code nothing happens, so an email someone else's agent caused can only be ignored. An account an agent starts has no free credits; an address that has an account gets one more key on it, which the Keys page can revoke.
  18. API

    A company's people with their roles, and the Ad Library as plain text

    Changed

    • `linkedin/employees` returns `linkedin_lead`, the same object as `linkedin/people` with `source=sales_navigator`: each person's current roles, each with its title, the employer's `company_id` and the start month. It returned `linkedin_member`, with the title in `headline` and no employer id or start. The price is unchanged.

    New

    • `linkedin/activity` takes `posted_within` (`day`, `week` or `month`) with `type=comments`.

    Fixed

    • LinkedIn Ad Library answers read as plain text: an advertiser came back as "Example &amp; Cie", and an ad's text the same way.
    • A demo answer's note names who it is about. It said Ferrari on every one.
    • `linkedin/activity`'s page says that a member-id link works, as it always did.
  19. API

    A LinkedIn profile with its work email

    curl "https://api.scrapefield.com/v1/linkedin/profile?vanity_name=someone&detail=with_email" \
      -H "Authorization: Bearer $SCRAPEFIELD_KEY"

    New

    • `linkedin/profile` takes `detail=with_email`: the whole profile and a search for the person's work email, 33 credits. Each address in `emails` comes with its own check: `status` (`valid`, or `risky` when the domain accepts every address), `deliverable`, `catch_all` and `free_provider`.
  20. API

    X is the fifth platform: eight endpoints

    curl "https://api.scrapefield.com/v1/x/search?query=from:nasa%20artemis" \
      -H "Authorization: Bearer $SCRAPEFIELD_KEY"

    New

    • `x/profile`, `x/post` and `x/community`, 3 credits each: an account, one post by its URL or id, a community.
    • `x/posts`: an account's newest posts, about 20 a page, 13 credits; or a community's latest with `community_url`, 3.
    • `x/replies`, `x/retweeters`, `x/followers` (`type=following` for whom it follows) and `x/search` (`type=user` for accounts; X's search operators work in `query`), 13 credits a page.
    • Fields named after X's API v2: `username`, `description`, `public_metrics.followers_count`, `referenced_tweets`. Three new objects: `x_user`, `x_post`, `x_community`.
    • An X page with three worked examples, the MCP tools, the demo with no key, and X in `llms.txt` and the OpenAPI spec.
  21. Pricing

    LinkedIn is cheaper, and people, company and group search are live

    New

    • Live: `linkedin/people` (LinkedIn's people search, or Sales Navigator's with `source=sales_navigator`), `linkedin/services`, `linkedin/companies`, `linkedin/employee-stats`, `linkedin/ad`, `linkedin/group` and `linkedin/groups`.
    • Live: a profile's `detail=main`; posts by `query` and `posted_within`; a comment's replies and reactions (`comment_url`); comments' `sort`; and LinkedIn's job filters `workplace_type`, `employment_type`, `experience_level`, `company_id`, `easy_apply` and `sort`. `group_url` on posts is still not available.
    • `linkedin/profile` takes a member-id link (`/in/ACoAA…` or `/in/ACwAA…`), as reactions and Sales Navigator give. A reactor can be looked up in full.

    Changed

    • Lower prices: a LinkedIn profile 11 credits (25 before), or 7 with `detail=main`; a company page 3 (6); a person's posts, comments, reactions and activity 7 a page (64 and 128); a company's people 170 a page of 25, 6.8 a person (12.8 before); a job search or a job 3 (4); a TikTok video or account search 3 (4).
    • `linkedin/activity` pages back, up to 100 a page, gives a reaction its time, and gives `post_url` with each item. `post` is `null` for an article, whose author LinkedIn does not give.
    • A person in a list has `services`: what they offer, for someone found by `linkedin/services`.
  22. API

    LinkedIn people, company and group search, documented ahead of launch

    New

    • Documented, and refused as `not_available_yet` until they are live, with nothing charged: `linkedin/people` (LinkedIn's people search, or Sales Navigator's with `source=sales_navigator`), `linkedin/services`, `linkedin/companies`, `linkedin/employee-stats`, `linkedin/ad`, `linkedin/group` and `linkedin/groups`.
    • Documented the same way: a profile's `detail=main`; posts by `query` or `group_url`, and `posted_within`; a comment's replies and reactions (`comment_url`); and LinkedIn's job filters `workplace_type`, `employment_type`, `experience_level`, `company_id`, `easy_apply` and `sort`.

    Improved

    • `linkedin/posts` takes `limit` up to 100. A page can hold fewer while `next_cursor` is set.
    • Where several parameters share one price, `/v1/endpoints` lists them all in `credits_by.parameters`, and the spec in `x-credits-by.parameters`.
  23. API

    Eleven new endpoints: LinkedIn engagement, two ad libraries, and more of every platform

    New

    • `linkedin/posts` is live: a company's posts at 3 credits a page, a person's at 64. A company's come without counts; `linkedin/post` gives one post with them, at 3.
    • `linkedin/comments` and `linkedin/reactions`: the comments on one post, and who reacted to it, with which reaction. A company page that comments or reacts as itself is in the list, with `type: "company"`.
    • `linkedin/activity`: what one person commented on or reacted to lately, each with the post. `linkedin/employees`: the people at a company, by its `company_id`.
    • `linkedin/ads` and `tiktok/ads`: the public ad libraries, searched by advertiser or by words in the ad.
    • `google-maps/posts`: the updates an owner posts on a listing. `instagram/search`: accounts by a keyword. `tiktok/followers`: an account's followers, or whom it follows. `tiktok/trending`: the trending feed in one country.

    Changed

    • `linkedin/jobs` takes `posted_within`: `day`, `week` or `month`. The `posted_within_days` it documented as not available yet is gone; a call that sends it is told the new name. `workplace_type` is still not available.
  24. API

    Canonical LinkedIn links, a current-role flag, and member ids refused up front

    New

    • Each position on a LinkedIn profile has `is_current`: `true` where the profile says the role runs to the present, `false` where it has an end date, `null` where it gives no dates. `end_date: null` alone could not tell a current role from an undated one.

    Changed

    • Every LinkedIn link in an answer is canonical: on `www.linkedin.com`, with no tracking query, and a person, company or school page cut to its name. The same company no longer comes back as several URLs.
    • A LinkedIn profile is looked up by its public name. A member-id URL (`/in/ACoAA…`) is refused as `invalid_parameter` before anything is charged, in the demo too: it could not be looked up.

    Fixed

    • The demo profile's `location` carried the page's own text, "Contact Info". Live calls had it right from 2026-10-04; the demo answer is captured again.

The weeks around it