apick-api 4.4.0 → 4.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/index.d.ts CHANGED
@@ -153,102 +153,120 @@ export interface XPost {
153
153
  readonly author: { readonly followers: number | null; readonly is_verified: boolean };
154
154
  }
155
155
 
156
- export interface TiktokVideo {
157
- readonly video_id: string;
156
+ export interface CoupangProduct {
157
+ readonly product_id: string;
158
158
  readonly url: string;
159
- readonly username: string;
160
- readonly description: string;
161
- readonly posted_at: string;
162
- readonly views: number | null;
163
- readonly likes: number | null;
164
- readonly comments: number | null;
165
- readonly shares: number | null;
166
- readonly saves: number | null;
167
- readonly duration_sec: number | null;
168
- readonly hashtags: readonly string[];
169
- readonly region: string;
170
- readonly cover_image_url: string;
171
- readonly author: { readonly followers: number | null; readonly is_verified: boolean };
172
- }
173
-
174
- /** 댓글 작성자는 공개 사용자명만 제공한다. */
175
- export interface SocialComment {
176
- readonly comment_id: string;
177
- readonly username: string;
178
- readonly text: string;
179
- readonly posted_at: string;
180
- readonly likes: number | null;
181
- readonly replies: number | null;
182
- }
183
-
184
- export interface AmazonReview {
185
- readonly review_id: string;
159
+ readonly title: string;
186
160
  readonly rating: number | null;
161
+ readonly reviews: number | null;
162
+ readonly initial_price: string;
163
+ readonly final_price: string;
164
+ readonly discount_rate: number | null;
165
+ readonly currency: string;
166
+ readonly seller_name: string;
167
+ readonly shop_url: string;
168
+ readonly seller_rating: number | null;
169
+ readonly seller_reviews: number | null;
170
+ readonly images: readonly string[];
171
+ readonly main_image: string;
172
+ readonly categories: readonly { readonly name: string; readonly url: string }[];
173
+ readonly root_category: string;
174
+ readonly root_category_url: string;
175
+ readonly shipping_details: readonly string[];
176
+ readonly variations: readonly { readonly name: string; readonly variations: readonly string[] }[];
177
+ readonly is_in_stock: boolean;
178
+ }
179
+
180
+ /** 네이버 브랜드스토어 상품. 상품 주소는 `/{스토어}/products/{번호}` 형식만 받는다. */
181
+ export interface NaverShoppingProduct {
182
+ readonly product_id: string;
183
+ readonly url: string;
187
184
  readonly title: string;
188
- readonly text: string;
189
- readonly author: string;
190
- readonly posted_at: string;
191
- readonly country: string;
192
- readonly is_verified_purchase: boolean;
193
- readonly helpful_count: number | null;
194
- readonly variant: string;
195
- }
196
-
197
- export interface GoogleMapsPlace {
185
+ readonly original_price: string;
186
+ readonly final_price: number | null;
187
+ readonly discount_rate: number | null;
188
+ readonly currency: string;
189
+ readonly description: string;
190
+ readonly total_reviews: number | null;
191
+ readonly average_rating: number | null;
192
+ readonly sold_out: boolean;
193
+ readonly delivery_fee_type: string;
194
+ readonly arrival_guarantee: boolean;
195
+ readonly category_name: string;
196
+ readonly tags: readonly string[];
197
+ readonly breadcrumbs: readonly string[];
198
+ readonly images: readonly string[];
199
+ readonly sellers: readonly { readonly seller_name: string; readonly final_price: number | null; readonly currency: string; readonly seller_link: string }[];
200
+ readonly product_information: readonly { readonly label: string; readonly value: string }[];
201
+ }
202
+
203
+ export interface LinkedinProfile {
204
+ readonly linkedin_id: string;
198
205
  readonly name: string;
199
- readonly category: string;
200
- readonly categories: readonly string[];
201
- readonly address: string;
206
+ readonly first_name: string;
207
+ readonly last_name: string;
208
+ readonly position: string;
209
+ readonly about: string;
210
+ readonly location: string;
202
211
  readonly country_code: string;
203
- readonly phone: string;
204
- readonly website: string;
205
- readonly description: string;
206
- readonly rating: number | null;
207
- readonly reviews_count: number | null;
208
- /** 별점별 리뷰 수. */
209
- readonly rating_distribution: Readonly<Record<"1" | "2" | "3" | "4" | "5", number | null>>;
210
- /** 대표 리뷰(최대 10건). 작성자는 공개 표시 이름만. */
211
- readonly top_reviews: readonly { readonly reviewer_name: string; readonly rating: number | null; readonly posted_at: string; readonly text: string }[];
212
- readonly open_hours: Readonly<Record<string, string>>;
213
- /** day: 1=월 … 7=일 */
214
- readonly popular_times: readonly { readonly day: number | null; readonly hours: readonly { readonly hour: string; readonly busy_percent: number | null }[] }[];
215
- readonly similar_places: readonly { readonly name: string; readonly category: string; readonly rating: number | null; readonly reviews_count: number | null }[];
216
- readonly photo_urls: readonly string[];
217
- readonly main_image_url: string;
218
- readonly is_claimed: boolean;
219
- readonly permanently_closed: boolean;
220
- readonly temporarily_closed: boolean;
221
- readonly latitude: number | null;
222
- readonly longitude: number | null;
223
- readonly place_id: string;
224
- readonly map_url: string;
212
+ readonly followers: number | null;
213
+ readonly connections: number | null;
214
+ readonly current_company_name: string;
215
+ readonly avatar: string;
216
+ readonly banner_image: string;
217
+ readonly url: string;
218
+ readonly is_influencer: boolean;
219
+ readonly experience: readonly { readonly company: string; readonly title: string; readonly start: string; readonly end: string; readonly location: string }[];
220
+ readonly education: readonly { readonly school: string; readonly degree: string; readonly start: string; readonly end: string }[];
221
+ readonly certifications: readonly string[];
222
+ readonly languages: readonly string[];
223
+ readonly posts: readonly { readonly title: string; readonly link: string; readonly created_at: string; readonly interaction: string }[];
225
224
  }
226
225
 
227
- export type ScrapeJobProduct = "instagram_posts" | "instagram_comments" | "tiktok_search" | "tiktok_video" | "tiktok_comments" | "amazon_reviews" | "google_maps_place";
228
-
229
- export interface ScrapeJobOptions {
230
- /** 최대 결과 수. 이 수 × 단가를 예약하고 실제 결과 건수만 차감한다(instagram_comments 15, tiktok_search 50, 그 밖 100). */
231
- readonly maxResults?: number;
232
- /** 응답을 못 받아 다시 보낼 때 같은 접수로 처리할 키(8~128자). */
233
- readonly idempotencyKey?: string;
226
+ export interface LinkedinCompany {
227
+ readonly company_id: string;
228
+ readonly name: string;
229
+ readonly about: string;
230
+ readonly description: string;
231
+ readonly slogan: string;
232
+ readonly website: string;
233
+ readonly industries: string;
234
+ readonly company_size: string;
235
+ readonly organization_type: string;
236
+ readonly founded: number | null;
237
+ readonly followers: number | null;
238
+ readonly employees_on_linkedin: number | null;
239
+ readonly headquarters: string;
240
+ readonly locations: readonly string[];
241
+ readonly specialties: string;
242
+ readonly logo: string;
243
+ readonly image: string;
244
+ readonly url: string;
245
+ readonly funding: Readonly<Record<string, unknown>> | null;
246
+ readonly updates: readonly { readonly title: string; readonly link: string; readonly date: string; readonly text: string }[];
234
247
  }
235
248
 
236
- export interface ScrapeJob<T = unknown> {
237
- readonly job_id: string;
238
- readonly product: ScrapeJobProduct;
239
- readonly status: "waiting" | "processing" | "completed" | "failed";
240
- readonly max_results: number;
241
- readonly unit_point: number;
242
- readonly reserved_point: number;
243
- readonly charged_point: number;
244
- readonly result_count: number;
245
- readonly created_at: string;
246
- readonly completed_at: string | null;
247
- /** 결과 보관 기한(완료 후 72시간). */
248
- readonly result_expires_at?: string;
249
- readonly result_expired?: boolean;
250
- readonly items?: readonly T[];
251
- readonly error?: { readonly code: string; readonly message: string };
249
+ export interface LinkedinJob {
250
+ readonly job_posting_id: string;
251
+ readonly title: string;
252
+ readonly company_name: string;
253
+ readonly company_id: string;
254
+ readonly company_url: string;
255
+ readonly company_logo: string;
256
+ readonly location: string;
257
+ readonly employment_type: string;
258
+ readonly seniority_level: string;
259
+ readonly industries: string;
260
+ readonly summary: string;
261
+ readonly description_html: string;
262
+ readonly posted_time: string;
263
+ readonly posted_date: string;
264
+ readonly applicants: number | null;
265
+ readonly apply_link: string;
266
+ readonly is_easy_apply: boolean;
267
+ readonly base_salary: Readonly<Record<string, unknown>> | null;
268
+ readonly salary_standards: string;
269
+ readonly url: string;
252
270
  }
253
271
 
254
272
  export interface InstagramProfile {
@@ -353,6 +371,8 @@ export interface DataRequestInput {
353
371
  export interface RequestEmploymentInput extends DataRequestInput { insuranceYears?: number; }
354
372
  export interface RequestPersonalIncomeInput extends DataRequestInput { incomeYears?: number; }
355
373
  export interface RequestNpsJoinHistoryInput extends DataRequestInput { from?: string; to?: string; }
374
+ export interface RequestNpsDeductionCertInput extends DataRequestInput { years?: number; }
375
+ export interface RequestNpsCareerHistoryInput extends DataRequestInput { from?: string; to?: string; }
356
376
  export interface RequestDrivingLicenseInput extends DataRequestInput {}
357
377
  export interface RequestHealthCheckupInput extends DataRequestInput {}
358
378
  export interface RequestCashReceiptDeductionInput extends DataRequestInput { incomeYears?: number; }
@@ -436,6 +456,33 @@ export interface NpsJoinHistoryInfo {
436
456
  }
437
457
  export interface NpsJoinHistoryResultPayload { npsJoinHistory: NpsJoinHistoryInfo; }
438
458
 
459
+ export interface NpsDeductionCertYearEntry {
460
+ 발급연도: string; 사업장가입자고지금액: number; 지역가입자등납부금액: number;
461
+ 사업장가입자소급금액: number; 추납보험료납부금액: number; 실업크레딧납부금액: number; 총합계: number;
462
+ }
463
+ export interface NpsDeductionCertInfo {
464
+ 조회기간: { 시작: string; 끝: string };
465
+ 신청인: string;
466
+ 생년월일: string;
467
+ 연도별내역: NpsDeductionCertYearEntry[];
468
+ }
469
+ export interface NpsDeductionCertResultPayload { npsDeductionCert: NpsDeductionCertInfo; }
470
+
471
+ export interface NpsCareerHistoryEntry {
472
+ 사업장: string; 시작: string; 종료: string;
473
+ 기준소득월액: number; 납부개월: number; 미납개월: number; 납부금액: number;
474
+ }
475
+ export interface NpsCareerHistoryOtherEntry {
476
+ 시작: string; 종료: string; 가입자구분: string; 납부개월: number; 납부금액: number;
477
+ }
478
+ export interface NpsCareerHistoryInfo {
479
+ 조회기간: { 시작: string; 끝: string };
480
+ 합계: { 사업장수: number; 경력건수: number; 사업장납부개월: number; 사업장납부금액: number; 사업장외납부개월: number };
481
+ 경력: NpsCareerHistoryEntry[];
482
+ 사업장외가입: NpsCareerHistoryOtherEntry[];
483
+ }
484
+ export interface NpsCareerHistoryResultPayload { npsCareerHistory: NpsCareerHistoryInfo; }
485
+
439
486
  export interface DrivingLicenseAcquisition {
440
487
  면허종류코드: string; 발급일자: string; 합격일자: string; 발급지역: string; 발급일련번호: string;
441
488
  학원명: string; 졸업일자: string; 공고시험장: string; 등록일자: string; 면허조건: string;
@@ -593,12 +640,19 @@ export class ApickBinaryResult {
593
640
  }
594
641
 
595
642
  export const DEFAULT_BASE_URL: 'https://apick.app';
596
-
597
643
  export const SERVICES: Readonly<Record<string, Readonly<{
598
644
  endpoint: string;
599
645
  output: 'json' | 'binary';
600
646
  }>>>;
601
647
 
648
+ /** Brand, model name, model year and trim — all optional. With no `model` the call returns the brand/model list and is free. */
649
+ export interface VehicleModelInfoOptions {
650
+ maker?: string;
651
+ model?: string;
652
+ modelYear?: string;
653
+ trim?: string;
654
+ }
655
+
602
656
  export class ApickClient {
603
657
  createVideoJob(model: VideoModel, prompt: string, options?: VideoJobOptions): Promise<ApickResult<VideoJobData>>;
604
658
  getVideoJob(model: VideoModel, jobId: string): Promise<ApickResult<VideoJobData>>;
@@ -612,6 +666,8 @@ export class ApickClient {
612
666
  validatePhone(number: string): Promise<ApickResult>;
613
667
  holidays(year: number | string, month: number | string): Promise<ApickResult>;
614
668
  searchAddress(query: string, options?: { page?: number }): Promise<ApickResult>;
669
+ /** Look up Korean-market vehicle specifications. Values use fixed standard notation (fuel, drive type, transmission, body type, efficiency grade; multiple values joined with `+`). */
670
+ vehicleModelInfo(options?: VehicleModelInfoOptions): Promise<ApickResult>;
615
671
  ocr(image: string | BinaryInput | ArrayBuffer | ArrayBufferView, options?: OcrOptions): Promise<ApickResult>;
616
672
  maskResidentNumber(image: string | BinaryInput | ArrayBuffer | ArrayBufferView, options: MaskResidentNumberOptions): Promise<ApickBinaryResult>;
617
673
  maskResidenceCard(image: string | BinaryInput | ArrayBuffer | ArrayBufferView, options?: OcrOptions): Promise<ApickResult>;
@@ -633,15 +689,11 @@ export class ApickClient {
633
689
  amazonProduct(urlOrAsin: string): Promise<ApickResult<AmazonProduct>>;
634
690
  xProfile(usernameOrUrl: string): Promise<ApickResult<XProfile>>;
635
691
  xPost(url: string): Promise<ApickResult<XPost>>;
636
- createInstagramPostsJob(usernameOrUrl: string, options?: ScrapeJobOptions): Promise<ApickResult<ScrapeJob<InstagramPost>>>;
637
- createInstagramCommentsJob(url: string, options?: ScrapeJobOptions): Promise<ApickResult<ScrapeJob<SocialComment>>>;
638
- createTiktokSearchJob(keyword: string, options?: ScrapeJobOptions): Promise<ApickResult<ScrapeJob<TiktokVideo>>>;
639
- createTiktokVideoJob(url: string, options?: Pick<ScrapeJobOptions, "idempotencyKey">): Promise<ApickResult<ScrapeJob<TiktokVideo>>>;
640
- createTiktokCommentsJob(url: string, options?: ScrapeJobOptions): Promise<ApickResult<ScrapeJob<SocialComment>>>;
641
- createAmazonReviewsJob(urlOrAsin: string, options?: ScrapeJobOptions): Promise<ApickResult<ScrapeJob<AmazonReview>>>;
642
- createGoogleMapsPlaceJob(placeIdOrUrl: string, options?: Pick<ScrapeJobOptions, "idempotencyKey">): Promise<ApickResult<ScrapeJob<GoogleMapsPlace>>>;
643
- getScrapeJob<T = unknown>(jobId: string): Promise<ApickResult<ScrapeJob<T>>>;
644
- waitForScrapeJob<T = unknown>(jobId: string, options?: { intervalMs?: number; timeoutMs?: number }): Promise<ApickResult<ScrapeJob<T>>>;
692
+ coupangProduct(urlOrProductId: string): Promise<ApickResult<CoupangProduct>>;
693
+ naverShoppingProduct(url: string): Promise<ApickResult<NaverShoppingProduct>>;
694
+ linkedinProfile(url: string): Promise<ApickResult<LinkedinProfile>>;
695
+ linkedinCompany(url: string): Promise<ApickResult<LinkedinCompany>>;
696
+ linkedinJob(url: string): Promise<ApickResult<LinkedinJob>>;
645
697
  screenshot(url: string): Promise<ApickBinaryResult>;
646
698
  youtubeMetadata(url: string): Promise<ApickResult<YoutubeMetadata>>;
647
699
  youtubeThumbnail(url: string): Promise<ApickBinaryResult>;
@@ -686,6 +738,10 @@ export class ApickClient {
686
738
  getPersonalIncome(transactionId: string): Promise<ApickResult<DataRequestResult<PersonalIncomeResultPayload>>>;
687
739
  requestNpsJoinHistory(input: RequestNpsJoinHistoryInput): Promise<ApickResult<DataRequestAcceptedData>>;
688
740
  getNpsJoinHistory(transactionId: string): Promise<ApickResult<DataRequestResult<NpsJoinHistoryResultPayload>>>;
741
+ requestNpsDeductionCert(input: RequestNpsDeductionCertInput): Promise<ApickResult<DataRequestAcceptedData>>;
742
+ getNpsDeductionCert(transactionId: string): Promise<ApickResult<DataRequestResult<NpsDeductionCertResultPayload>>>;
743
+ requestNpsCareerHistory(input: RequestNpsCareerHistoryInput): Promise<ApickResult<DataRequestAcceptedData>>;
744
+ getNpsCareerHistory(transactionId: string): Promise<ApickResult<DataRequestResult<NpsCareerHistoryResultPayload>>>;
689
745
  requestDrivingLicense(input: RequestDrivingLicenseInput): Promise<ApickResult<DataRequestAcceptedData>>;
690
746
  getDrivingLicense(transactionId: string): Promise<ApickResult<DataRequestResult<DrivingLicenseResultPayload>>>;
691
747
  requestHealthCheckup(input: RequestHealthCheckupInput): Promise<ApickResult<DataRequestAcceptedData>>;