Acquire / saas · All operations
Read from an application's API
Read from a SaaS application API.
Status
- In arcform
Not built yet
arcform does not do this yet. Its place on the roadmap
arcform has
gleif_ra_fetchfor GLEIF's Registration Authorities list.- Shape of the result
- a new table, from no input table
- Level
- needs an arcform operator
What other tools call it
Meridian's classification; an independent blind rating agreed on 86.2% of 312 rows (exact class, version 2).
Alteryx Designer (1)
SaaS application input connectors (family)read 2026-09-2711 tools, one per application: Salesforce Input, Marketo Input, Dataverse Input, ServiceNow Input, Adobe Analytics, ...
Apache Hop (3)
Git Inputread 2026-09-27Read commits, issues, pull requests and comments from a Git host or local clone
Google Analytics Inputread 2026-09-27Read dimensions and metrics from a Google Analytics 4 property
Salesforce Inputread 2026-09-27Read records from a Salesforce object or SOQL query
Apache NiFi (2)
Box metadata and event processors (family)read 2026-09-2712 processors, Box file metadata, templates, collaborators, groups and event streams
SaaS application read processors (family)read 2026-09-278 processors, GetHubSpot, GetShopify, GetWorkdayReport, GetZendesk, QueryAirtableTable, QuerySalesforceObject, Slack
AWS Glue (1)
SaaS application connections (family)read 2026-09-2752 connection types, one per application: Adobe Analytics, Adobe Marketo Engage, Asana, Blackbaud, CircleCI, …
Azure Data Factory (1)
Copy activity source data stores: Services and apps (family)read 2026-09-2728 data stores usable as copy source: Concur (Preview), Dataverse, Dynamics 365, Dynamics AX, …
Bruin (1)
ingestr: SaaS and public API sources (family)read 2026-09-27108 source pages: salesforce, shopify, stripe, hubspot, google_analytics, …
Duckle (2)
APIs sources outside DuckDB (family)read 2026-09-253 components, one per system, run by Rust HTTP client: sap, dhis2, sap.rfc
SaaS Connectors sources outside DuckDB (family)read 2026-09-2528 components, one per system, run by Rust drivers and HTTP clients, outside DuckDB: salesforce, salesforce.bulk, hubspot, …
EasyMorph (11)
Import SharePoint listread 2026-09-27Read a SharePoint list
Import from Airtableread 2026-09-27Read a table from Airtable
Import from Google Analyticsread 2026-09-27Read metrics from Google Analytics
Import from Google Search Consoleread 2026-09-27Read metrics from Google Search Console
Import from Jiraread 2026-09-27Read information from Jira
Import from Microsoft Dataverseread 2026-09-27Read an entity or its metadata from Microsoft Dataverse
Import from Pipedriveread 2026-09-27Read deals, organisations and persons from Pipedrive
Import from Power BIread 2026-09-27Read data from a Power BI semantic model
Import from Salesforceread 2026-09-27Read rows of a Salesforce object
Import from Zendeskread 2026-09-27Read ticket and user data from Zendesk
Retrieve Catalog assetread 2026-09-27Fetch a static or computed dataset, file or URL registered in the EasyMorph Data Catalog
KNIME Analytics Platform (7)
Google Analytics Connectorread 2026-09-27Connect to a Google Analytics 4 property
Google Analytics Queryread 2026-09-27Query metrics and dimensions over date ranges from a Google Analytics 4 property
KNIME Nodes for Google Ads (Labs) (extension)read 2026-09-27Extension outside the base install: 5 current nodes: Google Ads Connector (Labs); Google Ads Geo Targets (Labs), …
Extension outside the base install: 1 current node: SAP Reader (Theobald Software)
KNIME Salesforce Integration (extension)read 2026-09-27Extension outside the base install: 3 current nodes: Salesforce Connector; Salesforce SOQL; Salesforce Simple Query
KNIME SharePoint List (extension)read 2026-09-27Extension outside the base install: 4 current nodes: Delete SharePoint List; SharePoint List Reader; SharePoint List Updater, …
KNIME Twitter Connectors (legacy) (extension)read 2026-09-27Extension outside the base install: 7 current nodes: Twitter API Connector (legacy); Twitter Followers Search (legacy), …
Pentaho Data Integration (4)
Google Analyticsread 2026-09-27Fetch data from a Google Analytics account
OpenERP object input (deprecated)read 2026-09-27Deprecated: read records from an OpenERP server over XML-RPC
SAP input (deprecated)read 2026-09-27Deprecated: read data from SAP ERP, optionally with parameters
Salesforce Inputread 2026-09-27Read records from Salesforce
Power Query M (1)
SaaS and application connector functions (family)read 2026-09-279 functions: Salesforce.Data, SharePoint.Files, Exchange.Contents, GoogleAnalytics.Accounts, AdobeAnalytics.Cubes
RapidMiner Studio (4)
Get Data (IoT)read 2026-09-27Fetch property values for things or a category from Altair IoT Studio
Read Data Sourceread 2026-09-27Read a published data source from a Tableau Server
Read Mozendaread 2026-09-27Load a view from the Mozenda web-scraping service as a table
Read Salesforceread 2026-09-27Read the records of a Salesforce object or SOQL query as a table
Tableau Prep (1)
Published data sourcesread 2026-09-27Read a data source published on Tableau Server or Tableau Cloud
Talend (12)
Application input components (family)read 2026-09-2721 components reading from a business application: tSalesforceInput, tSAPTableInput, tMarketoInput, tWorkdayInput
tDSInput / tDataStewardshipTaskInputread 2026-09-27Read the tasks held in Talend Data Stewardship campaigns
tDatasetInputread 2026-09-27Read the content of a Talend Data Preparation dataset
tGoogleAnalytics4Reportread 2026-09-27Read report data from Google Analytics 4
tGoogleAnalyticsReportread 2026-09-27Read report data from Google Analytics
tMarketoCampaignread 2026-09-27Read campaign records, activities and campaign changes from Marketo
tSAPBapiread 2026-09-27Call a BAPI function on an SAP server to extract data from it or load data to it
tSVNLogInputread 2026-09-27Read the log of a revision or range of revisions from an SVN repository
tSalesforceGetDeletedread 2026-09-27Read the records deleted from a Salesforce object during a given period
tSalesforceGetServerTimestampread 2026-09-27Read the current date of the Salesforce server as a timestamp
tSalesforceGetUpdatedread 2026-09-27Read the records updated in a Salesforce object during a given period
tTableauInputread 2026-09-27Read data from a site on a Tableau server
VisiData (3)
API loaders (family)read 2026-09-236 loaders, one per service: airtable, reddit, matrix, zulip, gdrive (experimental), imap
reddit loader commands (family)read 2026-09-235 commands: add-submissions-match, add-subreddits-match, open-subreddits, sysopen-subreddit, sysopen-subreddits
zulip loader commands (family)read 2026-09-237 commands: edit-zulip-msg, open-zulip-members, -msgs, -profile, -streams, -subs, reply-zulip-msg
Background
Software as a service (SaaS) applications predominantly offer integration protocols and application programming interfaces (APIs) over a wide area network.[1] A server-side web API consists of one or more publicly exposed endpoints to a defined request–response message system.[2] In the Singer specification, a tap produces a stream of data from sources such as web service APIs for use in a data integration pipeline.[3]
When to use it
In Apache Hop's Salesforce Input transform, leaving the Query all records box unchecked retrieves only the first 2000 records, because of Salesforce's default pagination settings.[4] In GitHub's REST API, the per_page query parameter sets how many results a page returns, and a value above the endpoint's maximum is reduced to that maximum without an error.[5] Check the number of rows a read returns against the number the application shows before trusting the table. (Meridian's view)
GitHub's REST API allows 60 requests per hour for unauthenticated requests and 5,000 requests per hour for an authenticated user's personal rate limit.[6] The Hypertext Transfer Protocol (HTTP) status code 429 Too Many Requests means the user has sent too many requests in a given amount of time, and its response may carry a Retry-After header saying how long to wait.[7][8] GitHub's REST API sends x-ratelimit-remaining and x-ratelimit-reset headers with each response, giving the requests left in the current window and the time that window resets.[6] Continuing to make requests while rate limited on GitHub's REST API may result in the integration being banned.[6] Plan a large read to fit inside the application's request budget, and have it wait when told to slow down rather than retry at once. (Meridian's view)
Apache Hop's Salesforce Input transform can retrieve all, updated or deleted records, and with Query all records cleared it takes a start date and an end date to bound the range.[4] Talend's tSalesforceGetUpdated and tSalesforceGetDeleted components collect the data updated, or deleted, during a specific period of time from a Salesforce object.[9] Before relying on repeated reads of changed records alone, find out how the application reports the records that were deleted. (Meridian's view) In Apache Hop's Salesforce Input transform, Salesforce field API names such as CustomField__c stay the same when an administrator changes a field's label, while labels can change.[4] Name columns by the application's stable field identifiers rather than by the labels people see on screen. (Meridian's view)
The method
The Singer specification describes a tap as an application that takes a configuration file and an optional state file and outputs an ordered stream of record, state and schema messages.[3] In the Singer specification, a tap's configuration typically includes the credentials for the API or data source.[3] In the Singer specification, state persists information between a tap's invocations, and a common use is to record the spot in the stream where the last invocation left off.[3]
GitHub's REST API gives the URLs of the previous, next, first and last pages in a link header, and each paginated endpoint uses the page, before and after, or since query parameters.[5] Stripe's list API methods use cursor-based pagination, in which the starting_after parameter takes the ID of the last object received to fetch the next page.[10] A Stripe list response carries a has_more value that is false when the set returned is the end of the list.[10]
The dlt library is an open-source Python library that loads data from various, often messy data sources into well-structured datasets.[11] The dlt library's REST API source defines an API's endpoints, their relationships, pagination and authentication by declarative configuration, and tries to detect the pagination from the first response.[12] The dlt library describes incremental loading as loading only new or changed data and not old records already loaded, which needs track kept of the state of the load.[13] In the dlt REST API source, an incremental section names a cursor path and an initial value, and on each later run the start value becomes the maximum cursor value the last run saw.[12] The dlt library offers three write dispositions: a full load replaces the destination dataset, append adds the new data, and merge merges new data in using a merge key or primary key.[13] The dlt library's lag, or attribution window, reacquires recent data during incremental loading, for example always capturing the last 7 days when fetching daily analytics reports.[14]
The dlt library's requests wrapper, a customised Python Requests client, retries a failing request up to 5 times by default with an exponentially increasing delay, and retries on status 429 and every status in the 500 range.[15] When a 429 or 503 response carries a Retry-After header, the dlt requests wrapper uses that value in place of its standard retry delay.[15]
Sources
- [1]Software as a service - Wikipediasecondary source
- [2]Web API - Wikipediasecondary source
- [3]getting-started/docs/SPEC.md at master · singer-io/getting-started · GitHubdocumentation
- [4]Salesforce Input | Apache Hopdocumentation
- [5]Using pagination in the REST API - GitHub Docsdocumentation
- [6]Rate limits for the REST API - GitHub Docsdocumentation
- [7]RFC 6585: Additional HTTP Status Codesstandard
- [8]429 Too Many Requests - HTTP | MDNsecondary source
- [9]Salesforce components | Talend Components for Jobs Helpdocumentation
- [10]Pagination | Stripe API Referencedocumentation
- [11]Getting started with dlt | dlt Docsdocumentation
- [12]REST API source | dlt Docsdocumentation
- [13]Incremental loading in Python with dlt | dlt Docsdocumentation
- [14]Lag / Attribution window | dlt Docsdocumentation
- [15]REST API helpers | dlt Docsdocumentation
Used in
One Protocol uses this operation:
- EDGAR ↔ GLEIF — Company-to-LEI Crosswalk, step
fetch_gleif_sec_registrations