Best time to post on social media, by network and weekday API
Three large studies, side by side for Instagram, Facebook, LinkedIn, X and TikTok, so you can see where they agree, where they don't, and test from there.
- Endpoint:
GET https://postboost.co/app/api/tools/best-time-to-post(operationIdgetBestTimesToPost) - Web tool: postboost.co/tools/best-time-to-post
- Token: optional (limits)
- MCP: tool
get-best-times-to-postonhttps://postboost.co/mcp/tools
Request
| Query parameter | Type | Default | Description |
|---|---|---|---|
network | string | Network key, e.g. linkedin. Omit it for every network; an unknown key is a 422 that lists the allowed ones. |
Call it
- curl
- Python
- Node.js
- PHP
- Go
- Ruby
- Java
- C#
- Rust
- CLI
curl 'https://postboost.co/app/api/tools/best-time-to-post?network=linkedin'
from postboost import ApiClient, Configuration
from postboost.api.free_tools_api import FreeToolsApi
with ApiClient(Configuration()) as client:
api = FreeToolsApi(client)
result = api.get_best_times_to_post(network='linkedin')
print(result.to_dict())
import { FreeToolsApi } from 'postboost';
const api = new FreeToolsApi();
const { body } = await api.getBestTimesToPost('linkedin');
console.log(body);
use PostBoostClient\Api\FreeToolsApi;
$api = new FreeToolsApi(new GuzzleHttp\Client());
$result = $api->getBestTimesToPost("linkedin");
echo $result;
import (
"context"
"fmt"
postboost "github.com/postboost-co/postboost-go"
)
client := postboost.NewAPIClient(postboost.NewConfiguration())
result, _, err := client.FreeToolsAPI.GetBestTimesToPost(context.Background()).Network("linkedin").Execute()
fmt.Println(result, err)
require 'postboost'
api = PostBoost::FreeToolsApi.new
result = api.get_best_times_to_post(network: 'linkedin')
puts result.to_hash
import com.postboost.ApiClient;
import com.postboost.api.FreeToolsApi;
import com.postboost.model.FreeToolGetBestTimesToPostResponse;
FreeToolsApi api = new FreeToolsApi(new ApiClient());
FreeToolGetBestTimesToPostResponse result = api.getBestTimesToPost("linkedin");
System.out.println(result.toJson());
using PostBoost.Client.Api;
using PostBoost.Client.Client;
var api = new FreeToolsApi(new Configuration());
var result = await api.GetBestTimesToPostAsync("linkedin");
Console.WriteLine(result.ToJson());
use postboost::apis::configuration::Configuration;
use postboost::apis::free_tools_api;
let config = Configuration::new();
let result = free_tools_api::get_best_times_to_post(&config, Some("linkedin")).await?;
println!("{:?}", result);
./postboost-cli getBestTimesToPost network='linkedin'
With a token, send Authorization: Bearer YOUR_API_TOKEN as a default header (how, per SDK).
Response
{
"networks": [
{
"network": "LinkedIn",
"network_key": "linkedin",
"columns": [
"Sprout Social 2026",
"Buffer (top 3 hours)",
"Hootsuite"
],
"rows": [
[
"Mon",
"1–2 p.m.",
"10 p.m., 5 p.m., 9 p.m.",
"11 a.m."
],
[
"Tue",
"11 a.m.–5 p.m.",
"4 p.m., 5 p.m., 10 p.m.",
"6–8 a.m."
],
[
"Wed",
"11 a.m.–4 p.m.",
"4 p.m., 3 p.m., 5 p.m.",
"9 a.m."
],
[
"Thu",
"11 a.m., 1–5 p.m.",
"5 p.m., 7 p.m., 9 p.m.",
"2 p.m."
],
[
"Fri",
"11 a.m., 1–2 p.m.",
"3 p.m., 4 p.m., 5 p.m.",
"8 p.m."
],
[
"Sat",
"—",
"9 a.m., 6 p.m., 10 p.m.",
"4–5 a.m."
],
[
"Sun",
"—",
"10 p.m., 9 p.m., 6 a.m.",
"6 a.m."
],
[
"Best",
"Tue–Thu 11 a.m.–5 p.m.",
"Wed 4 p.m.; weekdays 3–8 p.m.; best day Wed",
"the page contradicts itself (Tue/Wed 8–9 a.m. vs 4–6 a.m.)"
],
[
"Worst",
"weekends",
"Mon (Tue close)",
"weekends"
]
]
}
],
"last_verified": "2026-10-13",
"sources": [
{
"label": "Sprout Social, Best times to post on social media (2026-03-31; local time; ~2B engagements, ~307k profiles, 2025-11-27 to 2026-02-27)",
"url": "https://sproutsocial.com/insights/best-times-to-post-on-social-media/"
},
{
"label": "Buffer, best time to post on Instagram (2026-09-23; 9.6M posts)",
"url": "https://buffer.com/resources/when-is-the-best-time-to-post-on-instagram/"
},
{
"label": "Buffer, best time to post on Facebook (2026-02-26; 14M+ posts)",
"url": "https://buffer.com/resources/best-time-to-post-on-facebook/"
},
{
"label": "Buffer, best time to post on LinkedIn (2026-09-09; 4.8M+ posts)",
"url": "https://buffer.com/resources/best-time-to-post-on-linkedin/"
},
{
"label": "Buffer, best time to post on X (2026-03-13; 8.7M+ posts)",
"url": "https://buffer.com/resources/best-time-to-post-on-twitter-x/"
},
{
"label": "Buffer, best time to post on TikTok (2026-09-14; 7.1M+ posts)",
"url": "https://buffer.com/resources/best-time-to-post-on-tiktok/"
},
{
"label": "Hootsuite, best time to post on Instagram (2026-07-14)",
"url": "https://blog.hootsuite.com/best-time-to-post-on-instagram/"
},
{
"label": "Hootsuite, best time to post on Facebook (2025-11-19)",
"url": "https://blog.hootsuite.com/best-time-to-post-on-facebook/"
},
{
"label": "Hootsuite, best time to post on LinkedIn (2025-11-19)",
"url": "https://blog.hootsuite.com/best-time-to-post-on-linkedin/"
},
{
"label": "Hootsuite, best time to post on TikTok (2025-11-19)",
"url": "https://blog.hootsuite.com/best-time-to-post-on-tiktok/"
},
{
"label": "Hootsuite, best time to post on social media, overview with X times (2025-11-19)",
"url": "https://blog.hootsuite.com/best-time-to-post-on-social-media/"
}
],
"per_account": "These are study averages. With a PostBoost account, the getBestPostingTimes API operation (also an MCP tool) returns the best times from your own accounts' results."
}
With MCP
Connect https://postboost.co/mcp/tools (setup) and ask, for example: Get the best times to post per network from published studies, with sources with the PostBoost get-best-times-to-post tool.
Errors
| Status | When |
|---|---|
401 | The Authorization header holds an invalid token. Leave it out to call as a guest. |
413 | The JSON body is larger than 128 KB. |
422 | A field is invalid; the body lists the errors per field. |
429 | A limit is reached; see limits. |