This API is a great and cheap way to automate any searching of EU trademarks. The data is updated daily with all new changes applied.
In order to help you to get started with this API as possible, feel free to use these interfaces (in this case, written in TypeScript) in your code:
export interface ITradeMark {
transactionDate: Date;
information: IInformation;
goodsServices?: IGoodsServices;
markDescription?: ITextType[];
owner?: IApplicantReference;
representative?: string;
irTransformation?: IIrTransformation; // Madrid Protocol International Registration Transformation
seniorities?: ISeniority[];
priorities?: IPriority[];
}
export interface IPriority {
countryCode: string;
number: string;
date: Date;
partialIndicator: boolean;
statusCode: string;
}
export interface IIrTransformation {
registrationNumber: string;
registrationDate: Date;
cancellationDate: Date;
priorityDate: Date;
}
export interface ISeniority {
countryCode: string;
applicationNumber: string;
applicationDate?: Date;
filingDate: Date;
registrationNumber: string;
registrationDate: Date;
internationalTradeMarkCode: string;
partialIndicator: any;
statusCode: string;
}
export interface IRegistration {
number: string;
date: Date;
cancellationDate: Date;
priorityDate: Date;
}
export interface IApplicantReference {
identifier?: string;
uri?: string;
}
export interface IPublication {
identifier: string;
section: string;
date: Date;
page: number;
}
export interface IInformation {
registrationOfficeCode: string; // for EU Trademarks always "EM"
applicationNumber: string; // applicationNumber to use in /fetch endpoint
applicationDate: Date | null;
registrationDate: Date | null;
applicationLanguageCode: string; // external
secondLanguageCode: string;
expiryDate: Date | null;
markCurrentStatusCode: IMarkCurrentStatusCode;
markCurrentStatusDate: Date;
kindMark: string;
markFeature: string;
tradeDistinctivenessIndicator: boolean;
markVerbalElementText: string;
markImage: IMarkImage | null;
}
export interface IGoodsServices {
// Nice Classes
classificationVersion: string;
classDescriptionDetails: IClassDescription[];
}
export interface IClassDescription {
classNumber: number; // nice class number, anything between 0 and 45
}
export interface ITextType {
languageCode: string;
text: string;
}
export interface IMarkCurrentStatusCode {
milestone: number;
status: number;
label: string;
}
export interface IMarkImage {
fileFormat: string;
imageIdentifierString: string;
imageIdentifierKindCode: string;
uri: string;
colourClaimedText: ITextType | null;
categoryCode: string[];
}
export interface IApplicant {
transactionDate: Date;
identifier?: string;
nationalityCode?: string;
legalEntity?: string;
incorporationCountryCode?: string;
incorporationState?: string;
organizationName?: string;
firstName?: string;
middleName?: string;
lastName?: string;
nameSynonym?: string;
legalForm?: string;
address: IApplicantAddress;
}
export interface IApplicantAddress {
countryCode?: string;
state?: string;
city?: string;
postcode?: string;
street?: string;
unformattedPostalAddress?: string;
}
While weโre planning to publish an npm@type (.d.ts files), this shall help you as a quick primer.
While we put in a lot of effort to keep our data high-quality and up-to-date, we cannot guarantee their correctness, unfortunately (see Terms of Use).