# Posts: list

Retrieves a list of posts.
[Try it now](https://developers.google.com/blogger/docs/3.0/reference/posts/list#try-it) or [see an example](https://developers.google.com/blogger/docs/3.0/reference/posts/list#examples).

[Authorization](https://developers.google.com/blogger/docs/3.0/using#auth) is required if the posts are on a blog that is private. If the posts are on a blog that is public, then this method can be called without authorization.

## Request

### HTTP request

```
GET https://www.googleapis.com/blogger/v3/blogs/blogId/posts
```

### Parameters

| Parameter name | Value | Description |
|---|---|---|
| **Required parameters** |||
| `blogId` | `string` | The ID of the blog to fetch posts from. |
| **Optional parameters** |||
| `endDate` | `datetime` | Latest post date to fetch, a `date-time` with [RFC 3339](http://www.ietf.org/rfc/rfc3339.txt"") formatting. |
| `fetchBodies` | `boolean` | Whether the body content of posts is included (default: true). This should be set to false when the post bodies are not required, to help minimize traffic. (Default: `true`) |
| `fetchImages` | `boolean` | Whether image URL metadata for each post is included. |
| `labels` | `string` | Comma-separated list of labels to search for. |
| `maxResults` | `unsigned integer` | Maximum number of posts to fetch. |
| `orderBy` | `string` | Sort order applied to results. <br /> <br /> Acceptable values are: - "`published`": Order by the date the post was published - "`updated`": Order by the date the post was last updated |
| `sortOption` | `string` | `UNAVAILABLE NOW` <br /> <br /> Sort direction applied to results. <br /> <br /> Acceptable values are: - "`descending`": Sort posts in descending order in time (default) - "`ascending`": Sort posts in ascending order in time |
| `pageToken` | `string` | Continuation token if the request is paged. |
| `startDate` | `datetime` | Earliest post date to fetch, a `date-time` with [RFC 3339](http://www.ietf.org/rfc/rfc3339.txt) formatting. |
| `status` | `string` | Acceptable values are: - "`draft`": Draft posts - "`live`": Published posts - "`scheduled`": Posts that are scheduled to publish in future. |
| `view` | `string` | Acceptable values are: - "`ADMIN`": Admin level detail - "`AUTHOR`": Author level detail - "`READER`": Reader level detail |

### Request body

Do not supply a request body with this method.

## Response

If successful, this method returns a response body with the following structure:

```
{
  "kind": "blogger#postList",
  "nextPageToken": string,
  "items": [
    posts Resource
  ]
}
```

| Property name | Value | Description | Notes |
|---|---|---|---|
| `kind` | `string` | The kind of this entity. Always `blogger#postList`. |   |
| `nextPageToken` | `string` | Pagination token to fetch the next page, if one exists. |   |
| `items[]` | `list` | The list of posts for this blog. |   |

## Examples

**Note:** The code examples available for this method do not represent all supported programming languages (see the [client libraries page](https://developers.google.com/blogger/docs/3.0/libraries) for a list of supported languages).

### Java

Uses the [Java client library](http://code.google.com/p/google-api-java-client/)

```java
// The BlogId for the Blogger Buzz blog
String BUZZ_BLOG_ID = "2399953";

// Configure the Java API Client for Installed Native App
HttpTransport HTTP_TRANSPORT = new NetHttpTransport();
JsonFactory JSON_FACTORY = new JacksonFactory();

// Configure the Installed App OAuth2 flow.
Credential credential = OAuth2Native.authorize(HTTP_TRANSPORT,
	JSON_FACTORY, new LocalServerReceiver(),
	Arrays.asList(BloggerScopes.BLOGGER));

// Construct the Blogger API access facade object.
Blogger blogger = Blogger.builder(HTTP_TRANSPORT, JSON_FACTORY)
	.setApplicationName("Blogger-PostsList-Snippet/1.0")
	.setHttpRequestInitializer(credential).build();

// The request action.
List postsListAction = blogger.posts().list(BUZZ_BLOG_ID);

// Restrict the result content to just the data we need.
postsListAction.setFields("items(author/displayName,content,published,title,url),nextPageToken");

// This step sends the request to the server.
PostList posts = postsListAction.execute();

// Now we can navigate the response.
int postCount = 0;
int pageCount = 0;
while (posts.getItems() != null && !posts.getItems().isEmpty()) {
	for (Post post : posts.getItems()) {
		System.out.println("Post #"+ ++postCount);
		System.out.println("\tTitle: "+post.getTitle());
		System.out.println("\tAuthor: "+post.getAuthor().getDisplayName());
		System.out.println("\tPublished: "+post.getPublished());
		System.out.println("\tURL: "+post.getUrl());
		System.out.println("\tContent: "+post.getContent());
	}

	// Pagination logic
	String pageToken = posts.getNextPageToken();
	if (pageToken == null || ++pageCount >= 5) {
		break;
	}
	System.out.println("-- Next page of posts");
	postsListAction.setPageToken(pageToken);
	posts = postsListAction.execute();
}
```

## Try it!


Use the APIs Explorer below to call this method on live data and see the response.