Every post ranked for a date range.
Views, change, reads, read time, scroll, read-through and top channel per post. Sort with sort (views, change, reads, read_time, scroll, read_through, title, published, clicks, impressions, ctr, position) and direction (asc or desc); filter with filter (all, page1, growing, falling); search by title or slug. meta carries range, counts per filter and google. Google search fields appear only when the key also holds service.seo.view and acts for a member (a connected app); otherwise google is { connected: false, reason }.
https://app.softsolz.uk/api/v1/services/blogs/performance/postsRecent Requests
Kept only in this browserHeaders
AuthorizationstringrequiredBearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.
Query Params
fromstringFirst day, YYYY-MM-DD (UTC).
tostringLast day, YYYY-MM-DD (UTC), inclusive.
daysintegerLength of the range ending today, 1 to 400, when from and to are not given. Default 30.
comparestringprevious (default) compares with the period before, year with the same period last year, none turns comparison off.
sortstringColumn to sort by. Default views.
directionstringasc or desc.
filterstringall, page1, growing or falling.
searchstringWords in the title or slug.
limitintegerPage size, 1 to 100. Default 25.
offsetintegerRows to skip.
Response
Response Body · array of objects
post_idnumber | nullPost id.slugstring | nullPost slug.titlestring | nullPost title.statusstring | nullPost status.published_atstring | nullWhen the post was published.urlstring | nullPublic address of the post, when the blog address is set.urlsarray of objectsEvery public address of the post.viewsnumber | nullViews in the period. Every opening counts.previous_viewsnumber | nullViews in the comparison period.views_changenumber | nullChange in views as a ratio (0.5 = +50%), null when there were none before.tracked_viewsnumber | nullViews with a recorded source.readsnumber | nullReads (a reader stayed at least a few seconds).previous_readsnumber | nullReads in the comparison period.avg_read_secondsnumber | nullAverage read time in seconds.avg_scrollnumber | nullAverage scroll depth, 0 to 100.read_throughnumber | nullShare of reads that reached 75% of the post.top_channelobject | nullChannel that brought the most tracked views.googleobject | nullGoogle clicks, impressions, CTR, average position and change for the period.Request
curl --request GET \ --url https://app.softsolz.uk/api/v1/services/blogs/performance/posts \ --header 'Authorization: Bearer sk_live_your_key'Credentials
Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser. Use an sk_test_ key to stay in your sandbox.
Response · 200
{ "data": [ { "post_id": 42, "slug": "launch-announcement", "title": "Launch announcement", "status": "published", "published_at": "your-published-at", "url": "https://example.com", "urls": [ {} ], "views": 320, "previous_views": 210, "views_change": 0.52, "tracked_views": 260, "reads": 120, "previous_reads": 90, "avg_read_seconds": 88, "avg_scroll": 61, "read_through": 0.4, "top_channel": { "channel": "organic_search", "label": "Organic search", "views": 140 }, "google": {} } ], "meta": { "limit": 50, "offset": 0, "total": 1, "has_more": false }}