View as Markdown
Harvest icon

Harvest ACTION

List Time Entries

Retrieve a list of time entries from Harvest, with optional filters, automatically following pagination up to 200 entries. Use this to discover time entry IDs for Get Time Entry, Update Time Entry, or Delete Time Entry. For a pure "how many entries are there" question, set countOnly to skip fetching any entries and just return the true total — safe even on a huge, unfiltered result set that would otherwise exceed the response-size limit. Pass notes to filter results to entries whose notes contain that text (client-side, case-insensitive substring) — useful for finding one entry inside a large result set without hitting the output-size limit. Example: call with projectId set to a project's ID and from/to set to a date range to total up hours logged that week. See the documentation.
  • Action
  • Read only
  • OAuth
  • SDK
  • MCP

IMPLEMENTATION

Call this tool

Connect a user's Harvest account once, then configure and run List Time Entries from your backend or agent.

import { PipedreamClient } from "@pipedream/sdk"

const pd = new PipedreamClient({
  projectId: process.env.PIPEDREAM_PROJECT_ID!,
  clientId: process.env.PIPEDREAM_CLIENT_ID!,
  clientSecret: process.env.PIPEDREAM_CLIENT_SECRET!,
  projectEnvironment: "production",
})

const result = await pd.actions.run({
  id: "harvest-list-time-entries",
  externalUserId: "{external_user_id}", // any stable ID for this user in your system
  configuredProps: {
    harvest: { authProvisionId: "apn_xxxxxxx" },
    accountId: "Account ID",
    userId: "User ID",
  },
})

console.log(result)

SCHEMA

Inputs

Pipedream supplies the connected account. Your application provides the operation-specific values below. Dynamic inputs are resolved against that user's account.

List Time Entries inputs
Property Type Description
accountId Account ID string
Your Harvest account ID, e.g. 1234567. Run List Account ID Options to find it.
Required
userId User ID string
Free-form user ID, e.g. 1782959. Run List Users first to find valid IDs.
Optional
clientId Client ID string
Free-form client ID, e.g. 5735776. Run List Clients first to find valid IDs.
Optional
projectId Project ID string
Free-form project ID, e.g. 14308069. Run Get Projects first to find valid IDs.
Optional
taskId Task ID string
Free-form task ID, e.g. 1467097. Run List Tasks first to find valid IDs.
Optional
isBilled Is Billed boolean
Only return entries that have or have not been invoiced.
Optional
isRunning Is Running boolean
Only return running or non-running entries.
Optional
updatedSince Updated Since string
Only return records updated since this UTC datetime, e.g. 2019-06-25T15:30:00Z.
Optional
from From string
Only return entries with a spent_date on or after this date, format YYYY-MM-DD, e.g. 2026-09-01.
Optional
to To string
Only return entries with a spent_date on or before this date, format YYYY-MM-DD, e.g. 2026-09-10.
Optional
notes Notes Contains string
Only return entries whose notes contain this text (case-insensitive substring match, applied client-side). Use this to find a specific entry inside a large result set instead of paging through everything.
Optional
countOnly Count Only boolean
Skip fetching entries entirely and just return the true total for the given filters (via Harvest's own count). Use this for "how many" questions — safe on any result size, since it never fetches the entries themselves.
Optional

REFERENCE

Tool details

Behavior hints are published with the component in the Pipedream registry and surface as MCP tool annotations, so an agent can reason about a tool before it calls it.

Registry key
harvest-list-time-entries
Version
0.0.1
App
Harvest
Authentication
OAuth
Read-only
Yes
Destructive
No
Open world
Yes