eBay TypeScript/JavaScript API for Browser and Node
Last updated
Was this helpful?
Last updated
Was this helpful?
This eBay API implements both Traditional (xml) and the RESTful eBay API. It supports client credentials grant
and authorization code grant
(Auth'N'Auth, OAuth2 and IAF). Digital Signature is supported too.
v9.2.0-RC.0
is the latest release.
See for the full changelog.
Buy API
✔ Browse API v1.10.0
✔ Deal API v1.3.0
✔ Feed API v1.3.1
✔ Marketing API v1_beta.1.0
✔ Offer API v1_beta.0.0
✔ Order API v1_beta.20.0
✔ Marketplace Insights API v1_beta.2.2
Commerce API
✔ Catalog API v1_beta.3.1
✔ Charity API v1.2.0
✔ Identity API v1.0.0
✔ Notification API v1.2.0
✔ Taxonomy API v1.0.0
✔ Translation API v1_beta.1.4
✔ Media API v1_beta.1.0
Developer API
✔ Analytics API
Post Order API
✔ Cancellation API ✔ Case Management API ✔ Inquiry API ✔ Return API
Sell API
✔ Account API v1.9.0
✔ Analytics API v1.3.0
✔ Compliance API v1.4.1
✔ Feed API v1.3.1
✔ Finance API v1.9.0
✔ Fulfillment API v1.19.10
✔ Inventory API v1.18.0
✔ Listing API v1_beta.2.1
✔ Logistics API v1_beta.0.0
✔ Marketing API v1.17.0
✔ Metadata API v1.7.1
✔ Negotiation API v1.1.0
✔ Recommendation API v1.1.0
Finding API
✔
Shopping API
✔
Merchandising API
✔
Trading API
✔
Client Alerts API
✔
Feedback API
✔
Or use [https://github.com/Rob--W/cors-anywhere](CORS Anywhere is a NodeJS proxy) (works very well with heroku.com).
The first (required) parameter in eBayApi instance takes an object with following properties:
appId
Required
certId
Required
devId
Conditionally
sandbox
Required
ruName
Conditionally
autoRefreshToken
Required
Auto refresh the token if it's expired.
siteId Traditional
Required
eBay site to which you want to send the request (Trading API, Shopping API).
authToken Traditional
Optional
The Auth'N'Auth token. The traditional authentication and authorization technology used by the eBay APIs.
marketplaceId RESTful
Required
scope RESTful
Conditionally
The scopes assigned to your application allow access to different API resources and functionality.
endUserCtx RESTful
Conditionally recommended RESTful
contentLanguage RESTful
Conditionally required
acceptLanguage RESTful
Optional
Use eBayApi.fromEnv()
to load data from environment variables.
appId
process.env.EBAY_APP_ID
certId
process.env.EBAY_CERT_ID
devId
process.env.EBAY_DEV_ID
authToken
process.env.EBAY_AUTH_TOKEN
siteId
process.env.EBAY_SITE_ID
marketplaceId
process.env.EBAY_MARKETPLACE_ID
ruName
process.env.EBAY_RU_NAME
sandbox
process.env.EBAY_SANDBOX === 'true'
To see node debug logs use DEBUG=ebay:*
environment variable.
Client credentials grant flow mints a new Application access token. Authorization code grant flow mints a new User access token.
👉 Recommended for all API Calls.
👉 Recommended for API calls that will only request application data (GET
method, and it's also restricted).
If no other token is set, this token will be obtained automatically in the process of calling an RESTful API.
You can also generate the token on eBay developer page and use it directly (see Detailed configuration example).
After you granted success, eBay will redirect you to your 'Auth accepted URL' and add a query parameter code
This is how it would look like if you use express
:
If token is already in session:
Signatures are required when the call is made for EU- or UK-domiciled sellers, and only for the following APIs/methods:
All methods in the Finances API -> (eBay.finances.XXX.sign.YYY()
)
issueRefund in the Fulfillment API -> (eBay.sell.fulfillment.sign.issueRefund()
)
GetAccount in the Trading API -> (eBay.trading.GetAccount(null, { sign: true }))
)
The following methods in the Post-Order API:
Issue Inquiry Refund -> (eBay.postOrder.inquiry.sign.issueInquiryRefund()
)
Issue case refund -> (eBay.postOrder.inquiry.sign.issueCaseRefund()
)
Issue return refund -> (eBay.postOrder.inquiry.sign.issueReturnRefund()
)
Process Return Request -> (eBay.postOrder.inquiry.sign.processReturnRequest()
)
Create Cancellation Request -> (eBay.postOrder.inquiry.sign.createCancellation()
)
Approve Cancellation Request -> (eBay.postOrder.inquiry.sign.approveCancellationRequest()
)
For some APIs, eBay use a apix
/apiz
subdomain. To use these subdomains you can use .apix
/.apiz
before the api call like this:
In any case eBay adds a new subdomain, it's also possible to configure whatever you want:
If autoRefreshToken
is set to true (default value) the token will be automatically refreshed when eBay response with invalid access token
error.
Use Event Emitter to get the token when it gets successfully refreshed.
To manual refresh the auth token use eBay.OAuth2.refreshAuthToken()
and for the client token use eBay.OAuth2.refreshClientToken()
. Keep in mind that you need the 'refresh_token' value set.
Sometimes you want to add additional headers to the request like a GLOBAL-ID X-EBAY-SOA-GLOBAL-ID
. You have multiple options to do this.
You can pass headers directly in the method call in the second parameter:
You need a decompress library installed like zlib
.
The errorCode
is extracted from the first error in the API response.
The second parameter in the traditional API has the following options:
Will produce:
You can submit your description using CDATA if you want to use HTML or XML.
No. This library has already all authentication implemented and support also auto refreshing token.
What does IAF mean?
IAF stands for IDENTITY ASSERTION FRAMEWORK. The traditional API supports IAF. That means you can use the OAuth2 token with the traditional APIs.
Is it possible to Upload Pictures directly to EPS?
itemAffiliateWebUrl is missing in eBay.buy.browse.search call You have to set endUserCtx
.
MIT.
Sign up for an API key here: . Checkout API .
Check out live example: . Because of the eBay CORS problems a Proxy server is required to use the API in the Browser.
For testing purpose you can use https://ebay.hendt.workers.dev/
url as proxy. You can also set up your own Proxy server. We have added a example for cloudfront workers:
App ID (Client ID) from .
Cert ID (Client Secret) from .
The Dev Id from .
If true, the will be used.
The redirect_url value. .
REST HTTP Header. X-EBAY-C-MARKETPLACE-ID identifies the user's business context and is specified using a marketplace ID value. Note that this header does not indicate a language preference or consumer location.
X-EBAY_C_ENDUSERCTX provides various types of information associated with the request.
Content-Language indicates the locale preferred by the client for the response.
Accept-Language indicates the natural language the client prefers for the response. This specifies the language the client wants to use when the field values provided in the request body are displayed to consumers.
See the full Documentation .
You must employ a User token to call any interface that accesses or modifies data that is owned by the user (such as user information and account data). To get a User token, the users of your app must grant your application the permissions it needs to act upon their behalf. This process is called user consent. With the user consent flow, each User token contains the set of scopes for which the user has granted their permission .
Application tokens are general-use tokens that give access to interfaces that return application data. For example, many GET requests require only an Application token for authorization.
In the Single User Model, the application supports only a single user. In this model, you need only one Auth'n'Auth token. 👉 The "old" way. Only works with Traditional API. Checkout the .
is used to parse the XML. You can pass the parse option to parseOptions
parameter.
Do I need the dependency?
Yes. Checkout the example and .
Check